Rocky Linux系统免密SSH与网络配置全攻略

一、SSH免密登录配置指南

1.1 密钥对生成与安全存储

在Linux系统中使用RSA算法生成4096位密钥对是当前最安全的认证方式之一。执行以下命令创建密钥:

  1. ssh-keygen -t rsa -b 4096 -C "admin@example.com"

系统会提示输入保存路径和密码短语,建议:

  • 保持默认路径~/.ssh/
  • 密码短语留空(直接回车)
  • 生成后检查文件权限:
    1. ls -l ~/.ssh/id_rsa*
    2. -rw------- 1 root root 3243 May 15 10:30 id_rsa
    3. -rw-r--r-- 1 root root 742 May 15 10:30 id_rsa.pub

1.2 推荐配置方法:ssh-copy-id工具

该工具能自动完成以下关键操作:

  1. 将公钥追加到远程authorized_keys文件
  2. 创建必要的.ssh目录结构
  3. 设置正确的文件权限

完整操作流程:

  1. # 本地执行(需先建立基础SSH连接)
  2. ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
  3. # 验证配置
  4. ssh user@remote_host
  5. # 应直接进入shell而无密码提示

1.3 手动配置方案(适用于特殊环境)

当自动工具不可用时,需手动完成:

  1. 创建目录结构:
    1. mkdir -p ~/.ssh
    2. chmod 700 ~/.ssh
  2. 追加公钥内容:
    1. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    2. chmod 600 ~/.ssh/authorized_keys
  3. SELinux上下文修复(Rocky Linux默认启用):
    1. restorecon -R -v ~/.ssh

1.4 服务端配置检查

修改/etc/ssh/sshd_config关键参数:

  1. PubkeyAuthentication yes
  2. AuthorizedKeysFile .ssh/authorized_keys
  3. ChallengeResponseAuthentication no
  4. PasswordAuthentication no

应用配置变更:

  1. sudo systemctl restart sshd
  2. sudo systemctl status sshd # 验证服务状态

二、网络配置管理方案

2.1 NetworkManager基础配置

作为RHEL系标准网络管理工具,提供两种配置方式:

命令行配置(nmcli)

  1. # 查看当前连接
  2. nmcli connection show
  3. # 修改静态IP配置
  4. nmcli connection modify eth0 \
  5. ipv4.addresses 192.168.1.100/24 \
  6. ipv4.gateway 192.168.1.1 \
  7. ipv4.dns "8.8.8.8,8.8.4.4" \
  8. ipv4.method manual
  9. # 应用配置
  10. nmcli connection up eth0

配置文件方式

编辑/etc/sysconfig/network-scripts/ifcfg-eth0

  1. BOOTPROTO=none
  2. ONBOOT=yes
  3. IPADDR=192.168.1.100
  4. NETMASK=255.255.255.0
  5. GATEWAY=192.168.1.1
  6. DNS1=8.8.8.8
  7. DNS2=8.8.4.4

2.2 网络故障排查流程

  1. 基础连通性测试
    1. ping 8.8.8.8
    2. traceroute 8.8.8.8
  2. 服务状态检查
    1. systemctl status NetworkManager
    2. journalctl -u NetworkManager --no-pager -n 50
  3. 接口信息验证
    1. ip addr show eth0
    2. nmcli device show eth0

三、安全加固最佳实践

3.1 SSH服务强化

  1. 修改默认端口(建议2222以上)
  2. 限制登录用户组:
    1. AllowGroups sshusers
  3. 启用登录失败限制:
    1. MaxAuthTries 3
    2. LoginGraceTime 30s

3.2 防火墙配置

  1. # 允许新SSH端口
  2. sudo firewall-cmd --permanent --add-port=2222/tcp
  3. sudo firewall-cmd --reload
  4. # 验证规则
  5. sudo firewall-cmd --list-ports

3.3 定期审计方案

  1. 密钥轮换策略:
    1. # 每季度生成新密钥
    2. find ~/.ssh -name "id_rsa*" -mtime +90 -exec rm {} \;
  2. 登录日志监控:
    1. journalctl -u sshd --since "1 hour ago" | grep "Accepted"

四、自动化部署脚本

以下脚本实现一键配置(需root权限):

  1. #!/bin/bash
  2. # 变量定义
  3. SSH_PORT=2222
  4. USER="admin"
  5. REMOTE_HOST="192.168.1.200"
  6. # 生成密钥对
  7. echo "生成SSH密钥对..."
  8. ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa -N ""
  9. # 配置本地SSH
  10. echo "配置本地SSH客户端..."
  11. cat >> /etc/ssh/ssh_config <<EOF
  12. Host *
  13. ServerAliveInterval 60
  14. ConnectTimeout 10
  15. EOF
  16. # 远程配置(需提前建立基础连接)
  17. echo "配置远程服务器..."
  18. ssh -p $SSH_PORT $USER@$REMOTE_HOST " \
  19. mkdir -p ~/.ssh && \
  20. chmod 700 ~/.ssh && \
  21. echo '$(cat /root/.ssh/id_rsa.pub)' >> ~/.ssh/authorized_keys && \
  22. chmod 600 ~/.ssh/authorized_keys && \
  23. sed -i 's/^#PubkeyAuthentication/PubkeyAuthentication/' /etc/ssh/sshd_config && \
  24. sed -i 's/^#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/sshd_config && \
  25. systemctl restart sshd"
  26. echo "配置完成!请测试免密登录:"
  27. ssh -p $SSH_PORT $USER@$REMOTE_HOST "hostname"

本方案通过标准化流程和自动化工具,有效解决了企业环境中SSH安全配置的复杂性问题。实际部署时建议:

  1. 先在测试环境验证
  2. 制定完整的回滚方案
  3. 记录所有配置变更
  4. 建立配置管理数据库(CMDB)

对于大规模部署场景,可考虑集成到Ansible等配置管理工具中,实现更高效的批量管理。