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 实践任务
- 使用 SecureCRT 通过 SSH(端口 2222)登录
LinuxDC,启用 sshd。 - 配置端口 2222,禁用 root 登录。
- 设置密钥登录(Linux 用
ssh-copy-id,Windows 用 SecureFX)。 - 禁用密码登录,验证免密连接。
- 配置 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 配置 → 安全优化。密钥认证是首选,结合防火墙和日志监控,确保安全高效的远程管理。
💡 提示:定期审计配置,适应生产环境需求。