跳转至

9. SSH 配置与实践指南

本章节提供在 RHEL 9(主机名 LinuxDC)上配置 SSH 服务的完整流程,结合 SecureCRT(远程登录)和 SecureFX(文件传输)工具,涵盖密码登录和密钥认证的配置,适用于初学者和运维人员。内容经过 LinuxDC 环境验证,确保准确性和一致性。目标是实现安全、可靠的远程访问。

💡 提示:优先使用密钥认证以提升安全性,密码登录仅适合临时测试。在 RHEL 10 中,SSH 支持更强的加密算法(如 ed25519)和内置的 FIDO2 认证,进一步增强安全性。


9.1 前提条件

  • 系统:RHEL 9 已安装,主机名设为 LinuxDC
    hostnamectl set-hostname LinuxDC
    
  • SSH 客户端:SecureCRT(SSH2 协议,端口 2222,虚拟机 IP)。
  • 文件传输:SecureFX(SFTP 协议,端口 2222)。
  • SSH 服务:sshd 已安装(默认包含,若缺失则安装):
    dnf install -y openssh-server
    
  • 防火墙:已允许 SSH 端口(初始 22,后改为 2222)。
  • 网络:客户端与 LinuxDC 网络互通。
  • 时间同步:已完成(参考第 4 章)。
  • 用户权限:具有 root 或 sudo 权限。

检查点systemctl status sshd 显示 active(running)。


9.2 SSH 服务基本配置

9.2.1 启动并启用 sshd

systemctl enable --now sshd  # 启用并立即启动 sshd 服务

9.2.2 修改 SSH 端口为 2222

vim /etc/ssh/sshd_config
# 修改或添加:
Port 2222

9.2.3 防火墙放行端口

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

⚠️ 注意:修改端口后,原端口 22 将失效。立即测试新端口连接。

9.2.4 重启服务

systemctl restart sshd

检查点ss -tuln | grep 2222 显示端口监听。


9.3 安全优化配置

9.3.1 禁用 root 登录

vim /etc/ssh/sshd_config
# 修改为:
PermitRootLogin no

9.3.2 禁用密码登录(推荐密钥认证后启用)

vim /etc/ssh/sshd_config
# 修改为:
PasswordAuthentication no
PubkeyAuthentication yes

9.3.3 限制登录用户

vim /etc/ssh/sshd_config
# 添加:
AllowUsers testuser  # 只允许 testuser 登录

💡 提示:生产环境建议结合 SELinux 和 fail2ban 进一步防护。


9.4 密钥认证配置

9.4.1 生成密钥对(客户端)

  • 在客户端(Linux/Windows):
    ssh-keygen -t ed25519 -C "your_email@example.com"  # 推荐 ed25519 算法
    # 或使用传统 RSA:
    ssh-keygen -t rsa -b 4096
    

9.4.2 上传公钥到服务器

  • Linux 客户端:

    ssh-copy-id -p 2222 testuser@192.168.1.100
    

  • Windows 客户端(SecureCRT/SecureFX):

  • 生成密钥对(SecureCRT → Tools → Key Generation Wizard)。
  • 使用 SecureFX 上传公钥到服务器 /home/testuser/.ssh/authorized_keys
  • 设置权限:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

9.4.3 测试密钥登录

ssh -p 2222 testuser@192.168.1.100

检查点:免密登录成功,无需输入密码。


9.5 DNS 与主机名解析

  • 配置 hosts 文件(客户端与服务器):

    vim /etc/hosts
    # 添加:
    192.168.1.100   LinuxDC
    

  • 验证:

    ping LinuxDC
    

💡 提示:生产环境推荐使用 DNS 服务器或本地 hosts 文件。


9.6 常见问题与排查

🔍 故障排查

  • 问题 1:连接超时
    解决:检查防火墙(firewall-cmd --list-ports)、端口监听(ss -tuln)、网络连通性。

  • 问题 2:密钥认证失败
    解决:检查权限(~/.ssh/authorized_keys 为 600)、所有者(用户本人)、SELinux 上下文(restorecon -Rv ~/.ssh)。

  • 问题 3:root 登录被拒
    解决:确认 PermitRootLogin 配置,重启 sshd。

💡 提示:日志查看:journalctl -u sshd -f 实时监控。


9.7 实践任务

  1. 使用 SecureCRT 通过 SSH(端口 2222)登录 LinuxDC,启用 sshd。
  2. 配置端口 2222,禁用 root 登录。
  3. 设置密钥登录(Linux 用 ssh-copy-id,Windows 用 SecureFX)。
  4. 禁用密码登录,验证免密连接。
  5. 配置 DNS 或 hosts 文件,确保 LinuxDC 可解析。

检查点:使用 ssh -p 2222 testuser@LinuxDC 免密登录成功。


9.8 速查表

命令/参数 功能
ssh -p 2222 user@LinuxDC 指定端口登录
ssh-keygen -t ed25519 生成 ed25519 密钥对(推荐)
ssh-copy-id -p 2222 user@LinuxDC 上传公钥
systemctl restart sshd 重启 SSH 服务
firewall-cmd --add-port=2222/tcp 防火墙放行端口
PasswordAuthentication no 禁用密码登录

9.9 总结

本章节提供 RHEL 9 上 SSH 配置的清晰路径:服务启动 → 端口修改 → 密码/密钥登录 → DNS 配置 → 安全优化。密钥认证是首选,结合防火墙和日志监控,确保安全高效的远程管理。

💡 提示:定期审计配置,适应生产环境需求。