Appearance
🖥️ 第6章:ZSLinux SSH 配置与实践指南
本章提供在 RHEL 8.10(主机名 ZSLinux)上配置 SSH 服务的完整流程,结合 SecureCRT(远程登录)和 SecureFX(文件传输)工具,涵盖密码登录和密钥认证的配置,适用于初学者和运维人员。内容经过 ZSLinux 环境验证,确保准确性和一致性。目标是实现安全、可靠的远程访问。
💡 提示: 优先使用密钥认证以提升安全性,密码登录仅适合临时测试。
6.1 前提条件 ⚙️
- 系统: RHEL 8.10 已安装,主机名设为
ZSLinux。bashhostnamectl set-hostname ZSLinux - SSH 客户端: SecureCRT(SSH2 协议,初始端口 22,虚拟机 IP)。
- 文件传输: SecureFX(SFTP 协议,初始端口 22)。
- SSH 服务: sshd 已安装(默认包含,若缺失则安装):bash
dnf install -y openssh-server - 防火墙: 已允许 SSH 端口(初始 22,后改为 2222)。
- 网络: 客户端与 ZSLinux 网络互通。
- 时间同步: 确保客户端与服务器时间一致,避免密钥认证问题。bash
timedatectl set-ntp true
⚠️ 注意: 未配置防火墙或时间同步可能导致连接失败。参考系统安装章节完成初始设置。 ✅ 检查点: 运行 cat /etc/redhat-release 确认 RHEL 8.10,hostname 确认 ZSLinux。
6.2 SSH 服务启动与基本配置 🔧
6.2.1 启动 SSH 服务
启用并启动 sshd 服务(默认支持密码登录):
bash
systemctl enable --now sshd6.2.2 修改 SSH 配置
更改端口为 2222 并禁用 root 登录以提升安全性,同时关闭 DNS 解析以加速登录:
bash
vim /etc/ssh/sshd_config添加或修改以下行:
Port 2222
PermitRootLogin no
UseDNS no # 关闭反向 DNS 解析,加快 SSH 登录重启服务:
bash
systemctl restart sshd6.2.3 更新防火墙
支持新端口并移除默认 SSH 服务:
bash
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload⚠️ 注意: 修改端口后,立即测试新端口连接,避免锁定。 ✅ 检查点: 运行 systemctl status sshd 确认服务运行,ss -tuln | grep 2222 确认端口监听。
6.3 密码登录配置 🔑
密码登录适合临时访问,需确保启用:
bash
vim /etc/ssh/sshd_config确认或添加:
PasswordAuthentication yes
UseDNS no # 已关闭反向 DNS 解析重启服务:
bash
systemctl restart sshd💡 提示: 若使用 IP 登录,也可以直接访问,例如:
bash
ssh -p 2222 user@192.168.1.100✅ 检查点: 运行 ssh -p 2222 user@ZSLinux 或 ssh -p 2222 user@192.168.1.100,输入密码应登录成功。尝试 ssh -p 2222 root@ZSLinux 应被拒绝。
6.4 密钥认证配置 🗝️
密钥认证更安全,适合长期使用和自动化场景。
6.4.1 密钥生成
- 在客户端生成 RSA 密钥对:
bash
ssh-keygen -t rsa -b 2048 -C "user@ZSLinux"默认生成:~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub(公钥)。
- Windows 用户:使用 SecureCRT(Tools → Create Public Key…)生成密钥。
⚠️ 注意: 按 Enter 接受默认路径,或设置密码短语以增强安全性。
6.4.2 公钥上传
Linux 客户端 使用 ssh-copy-id 自动上传:
bash
ssh-copy-id -p 2222 user@ZSLinux自动追加公钥到 ~/.ssh/authorized_keys 并设置权限。
Windows 客户端 使用 SecureFX 手动上传时,推荐使用文件追加方式而非直接粘贴,以避免格式错误:
- 上传公钥文件到服务器临时目录,例如
~/tmp/id_rsa.pub。 - 登录服务器,执行命令将公钥追加到
authorized_keys:
bash
mkdir -p ~/.ssh
cat ~/tmp/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
rm -f ~/tmp/id_rsa.pub💡 提示: 确保 authorized_keys 文件每行一个公钥,无多余空格或换行。
6.4.3 禁用密码登录
仅允许密钥登录:
bash
vim /etc/ssh/sshd_config添加或修改:
PasswordAuthentication no
PubkeyAuthentication yes
UseDNS no重启服务:
bash
systemctl restart sshd✅ 检查点: 运行 ssh -p 2222 user@ZSLinux 或 ssh -p 2222 user@192.168.1.100,应免密登录。密码登录应失败。
6.5 DNS 配置(支持 user@ZSLinux) 🌐
为确保 ZSLinux 主机名可解析,配置 DNS 或本地 hosts 文件。
6.5.1 DNS 服务器配置
编辑 DNS 客户端配置文件:
bash
vim /etc/resolv.conf添加:
nameserver 8.8.8.8
nameserver 8.8.4.4在 DNS 服务器添加 A 记录(需管理员权限):
ZSLinux IN A 192.168.1.100 # 替换为实际 IP测试解析:
bash
nslookup ZSLinux6.5.2 本地 hosts 文件
若无 DNS 服务器,编辑 hosts 文件:
- Linux 客户端:
bash
sudo vim /etc/hosts- Windows 客户端:
C:\Windows\System32\drivers\etc\hosts # 管理员权限编辑添加:
192.168.1.100 ZSLinux测试:
bash
ping ZSLinux⚠️ 注意: hosts 文件仅本地生效,适合测试环境。 ✅ 检查点: 运行 nslookup ZSLinux 或 ping ZSLinux,确认解析正确。
6.6 安全建议与配置参数 📄
关键参数(/etc/ssh/sshd_config):
| 参数 | 推荐值 | 功能 |
|---|---|---|
| Port | 2222 | 自定义端口降低扫描风险 |
| PermitRootLogin | no | 禁止 root 登录 |
| PasswordAuthentication | no | 禁用密码登录 |
| PubkeyAuthentication | yes | 启用密钥认证 |
| UseDNS | no | 关闭反向 DNS 解析,加快 SSH 登录 |
安全建议:
- 使用强密钥(2048 位以上),定期轮换。
- 限制登录来源:
bash
vim /etc/ssh/sshd_config
# 添加:AllowUsers user@192.168.1.0/24- 启用 fail2ban 防暴力破解。
- 监控
/var/log/secure日志。
💡 提示: 备份 sshd_config 防止误配置:
bash
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak6.7 故障排查 🔍
| 问题 | 检查步骤 |
|---|---|
| 连接失败 | systemctl status sshdss -tuln |
| 密钥登录失败 | chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keysssh -v -p 2222 user@ZSLinux |
| DNS 问题 | nslookup ZSLinux检查 /etc/resolv.conf 或 /etc/hosts |
| SELinux | restorecon -Rv ~/.ssh |
| ✅ 检查点: 所有问题解决后,免密登录应正常。 |
6.8 实践任务 📝
- 使用 SecureCRT 登录 ZSLinux,启用 sshd。
- 配置端口 2222,禁用 root 登录。
- 设置密钥登录(Linux 用
ssh-copy-id,Windows 用 SecureFX)。 - 禁用密码登录,验证免密连接。
- 配置 DNS 或 hosts 文件,确保 ZSLinux 解析。
6.9 速查表 📚
| 命令/参数 | 功能 |
|---|---|
| ssh -p 2222 user@ZSLinux | 指定端口登录 |
| ssh-keygen -t rsa -b 2048 | 生成密钥对 |
| ssh-copy-id -p 2222 user@ZSLinux | 上传公钥 |
| systemctl restart sshd | 重启 SSH 服务 |
| firewall-cmd --add-port=2222/tcp | 防火墙放行端口 |
| PasswordAuthentication no | 禁用密码登录 |
6.10 总结 ✅
本章提供 RHEL 8.10 上 SSH 配置的清晰路径:服务启动 → 端口修改 → 密码/密钥登录 → DNS 配置 → 安全优化。密钥认证是首选,结合防火墙和日志监控,确保安全高效的远程管理。 💡 提示: 定期审计配置,适应生产环境需求。
