肇庆市网站建设_网站建设公司_Photoshop_seo优化
2026/1/16 14:36:28 网站建设 项目流程

SSH 服务学习笔记

一、SSH 基础概念

1. 什么是 SSH?

  • Secure Shell:加密的远程登录与文件传输协议
  • 替代不安全的 Telnet、FTP

2. 认证方式

方式 说明
密码认证 发送用户名+密码(明文传输?否!SSH 加密通道内)
密钥认证 ✅ 推荐!基于公私钥对,实现免密登录

3. 密钥对

  • 公钥(Public Key)
    • 可公开
    • 存放于服务器:~/.ssh/authorized_keys
  • 私钥(Private Key)
    • 必须保密
    • 存放于客户端:~/.ssh/id_rsa
    • ❗ 泄露 = 身份被盗用

二、SSH 工作原理(密钥认证流程)

  1. 生成密钥对(客户端):
    ssh-keygen -f ~/.ssh/id_rsa -P '' -q
    
  2. 分发公钥到服务器:
    ssh-copy-id root@192.168.88.101
    
  3. 登录验证过程
    • 客户端请求连接
    • 服务器用公钥加密随机字符串(挑战)
    • 客户端用私钥解密并返回
    • 服务器比对成功 → 允许登录

🔒 全程加密,私钥永不离开客户端


三、SSH 服务配置实战(CentOS Stream 9)

1. 安装与启动

# 检查是否安装
ssh -V                     # 客户端
systemctl status sshd      # 服务端# 安装(若未安装)
dnf install -y openssh-server openssh-clients# 启动并设置开机自启
systemctl start sshd
systemctl enable sshd

2. 核心配置文件

路径:/etc/ssh/sshd_config

参数 推荐值 说明
Port 22(或自定义) 监听端口
PermitRootLogin no 禁止 root 直接登录(安全)
PasswordAuthentication no 禁用密码登录(启用密钥后)
AllowUsers itheima 仅允许指定用户登录
DenyUsers 拒绝指定用户

修改后重载配置:

systemctl reload sshd

四、SSH 免密登录配置(node2 → node1)

步骤

  1. 在 node2 生成密钥对
    ssh-keygen -f ~/.ssh/id_rsa -P '' -q
    
  2. 将公钥发送到 node1
    ssh-copy-id -o StrictHostKeyChecking=no root@192.168.88.101
    
  3. 测试免密登录
    ssh root@192.168.88.101
    

✅ 成功:无需输入密码直接登录
🔄 反向配置(node1 → node2)同理

补充:自免密(自己连自己)

ssh-copy-id 192.168.88.101  # 在 node1 执行
ssh-copy-id 192.168.88.102  # 在 node2 执行

五、SSH 远程执行命令

语法

ssh [选项] user@host "command"

常用选项

选项 说明
-p 指定端口(非 22)
-t 强制分配 TTY(用于 sudo 等交互命令)
-o StrictHostKeyChecking=no 跳过主机密钥确认

示例

# 查看远程主机名
ssh root@192.168.88.102 "hostname"# 创建文件(多命令)
ssh root@192.168.88.102 "cd ~ && touch a.txt"

💡 价值:批量运维、自动化脚本、故障排查


六、SCP 安全文件传输

基本语法

scp [选项] 源路径 目标路径

常用选项

选项 说明
-r 递归复制目录
-P 指定 SSH 端口
-i 指定私钥文件
-C 启用压缩

用法示例

# 本地 → 远程
scp -r /root/ssh_test/ root@192.168.88.102:/# 远程 → 本地
scp root@192.168.88.101:/root/ssh_test/a.txt ./

七、综合案例:跨节点部署 JDK

步骤

  1. 在 node1 安装 JDK

    mkdir -p /export/software
    # 上传 jdk-8u241-linux-x64.tar.gz
    tar -xzf jdk-8u241-linux-x64.tar.gz -C /opt
    echo 'export JAVA_HOME=/opt/jdk1.8.0_241
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH' >> /etc/profile
    source /etc/profile
    java -version  # 验证
    
  2. 通过 SCP 同步到 node2

    # 复制 JDK 目录
    scp -r /opt/jdk1.8.0_241/ root@192.168.88.102:/opt
    # 同步环境变量
    scp /etc/profile root@192.168.88.102:/etc/
    
  3. 在 node2 生效

    source /etc/profile
    java -version  # 验证
    

✅ 实现“一次安装,多机复用”


八、多节点统一免密配置(含 Ubuntu)

场景

  • node1(CentOS)、node2(CentOS)、UbuntuServer01(Ubuntu)
  • 统一使用 itheima 用户互免密

步骤

  1. 创建 itheima 用户(CentOS)

    useradd itheima
    passwd itheima  # 设为 123456
    su - itheima    # 切换测试
    
  2. 三台机器均生成密钥对

    ssh-keygen -f ~/.ssh/id_rsa -P '' -q
    
  3. 互相分发公钥

    # 每台机器执行(假设 IP:101, 102, 130)
    ssh-copy-id 192.168.88.101
    ssh-copy-id 192.168.88.102
    ssh-copy-id 192.168.88.130
    
  4. 验证

    cat ~/.ssh/authorized_keys  # 应包含 3 个公钥
    ssh 192.168.88.101          # 无需密码
    

恢复初始状态

  • 推荐:使用 VMware 快照回滚
  • 手动清理
    rm -rf ~/.ssh
    

📝 本笔记覆盖 SSH 服务从虚拟机准备到多机免密、远程命令、文件传输及批量部署的完整流程,适用于集群环境初始化与自动化运维场景。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询