Skip to content

🖥️ 第6章:ZSLinux SSH 配置与实践指南

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

💡 提示: 优先使用密钥认证以提升安全性,密码登录仅适合临时测试。


6.1 前提条件 ⚙️

  • 系统: RHEL 8.10 已安装,主机名设为 ZSLinux
    bash
    hostnamectl 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 sshd

6.2.2 修改 SSH 配置

更改端口为 2222 并禁用 root 登录以提升安全性,同时关闭 DNS 解析以加速登录:

bash
vim /etc/ssh/sshd_config

添加或修改以下行:

Port 2222
PermitRootLogin no
UseDNS no  # 关闭反向 DNS 解析,加快 SSH 登录

重启服务:

bash
systemctl restart sshd

6.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@ZSLinuxssh -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 手动上传时,推荐使用文件追加方式而非直接粘贴,以避免格式错误:

  1. 上传公钥文件到服务器临时目录,例如 ~/tmp/id_rsa.pub
  2. 登录服务器,执行命令将公钥追加到 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@ZSLinuxssh -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 ZSLinux

6.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 ZSLinuxping ZSLinux,确认解析正确。

6.6 安全建议与配置参数 📄

关键参数(/etc/ssh/sshd_config):

参数推荐值功能
Port2222自定义端口降低扫描风险
PermitRootLoginno禁止 root 登录
PasswordAuthenticationno禁用密码登录
PubkeyAuthenticationyes启用密钥认证
UseDNSno关闭反向 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.bak

6.7 故障排查 🔍

问题检查步骤
连接失败systemctl status sshd
ss -tuln
密钥登录失败chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys
ssh -v -p 2222 user@ZSLinux
DNS 问题nslookup ZSLinux
检查 /etc/resolv.conf/etc/hosts
SELinuxrestorecon -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 配置 → 安全优化。密钥认证是首选,结合防火墙和日志监控,确保安全高效的远程管理。 💡 提示: 定期审计配置,适应生产环境需求。

采用 CC BY-NC-ND 4.0 许可。欢迎邮件反馈(zslinux@qq.com)