Rocky Linux 9.6 免密SSH与静态IP配置全攻略

一、SSH免密登录配置全流程

1.1 本地密钥对生成

在本地控制台执行以下命令生成RSA密钥对,建议使用4096位加密强度提升安全性:

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

执行过程中会提示:

  • 密钥存储路径(默认~/.ssh/
  • 密钥密码(直接回车留空)

生成后需确认文件权限:

  1. chmod 600 ~/.ssh/id_rsa # 私钥权限
  2. chmod 644 ~/.ssh/id_rsa.pub # 公钥权限

1.2 远程公钥部署方案

方案一:自动化部署(推荐)

使用ssh-copy-id工具自动完成公钥传输与配置:

  1. ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host

该命令会执行以下操作:

  1. 将公钥追加到~/.ssh/authorized_keys
  2. 自动设置正确的文件权限
  3. 验证SSH服务配置

方案二:手动部署流程

对于不支持ssh-copy-id的环境,可分步操作:

  1. # 1. 传输公钥文件
  2. scp ~/.ssh/id_rsa.pub user@remote_host:/tmp/
  3. # 2. 远程执行配置
  4. ssh user@remote_host << EOF
  5. mkdir -p ~/.ssh
  6. cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
  7. chmod 600 ~/.ssh/authorized_keys
  8. chmod 700 ~/.ssh
  9. rm -f /tmp/id_rsa.pub
  10. EOF

1.3 连接测试与验证

执行以下命令验证免密登录:

  1. ssh -v user@remote_host

正常连接时应显示:

  • Authentication succeeded (publickey)
  • 无密码输入提示

二、常见故障深度排查

2.1 权限问题矩阵

组件 正确权限 检查命令
~/.ssh/目录 700 ls -ld ~/.ssh
authorized_keys 600 ls -l ~/.ssh/*
私钥文件 600 chmod 600 ~/.ssh/id_rsa

2.2 SELinux安全策略

当出现Permission denied (publickey)错误时,执行:

  1. # 恢复默认安全上下文
  2. restorecon -Rv ~/.ssh
  3. # 检查SELinux状态
  4. getenforce

如需临时禁用(测试用):

  1. setenforce 0

2.3 SSH服务配置审计

检查关键配置项(/etc/ssh/sshd_config):

  1. PubkeyAuthentication yes
  2. AuthorizedKeysFile .ssh/authorized_keys
  3. PasswordAuthentication no # 建议禁用密码认证

配置修改后需重启服务:

  1. systemctl restart sshd
  2. journalctl -u sshd --no-pager -n 20 # 查看最近日志

三、静态IP网络配置指南

3.1 NetworkManager基础

Rocky Linux默认使用NetworkManager管理网络,可通过以下工具配置:

  • nmcli:命令行工具
  • nmtui:文本界面工具
  • 配置文件:/etc/sysconfig/network-scripts/ifcfg-<interface>

3.2 nmcli配置示例

为eth0接口配置静态IP:

  1. nmcli connection modify eth0 \
  2. ipv4.method manual \
  3. ipv4.addresses 192.168.1.100/24 \
  4. ipv4.gateway 192.168.1.1 \
  5. ipv4.dns "8.8.8.8,8.8.4.4" \
  6. connection.autoconnect yes
  7. nmcli connection up eth0

3.3 传统配置文件方法

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

  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. NAME=eth0
  4. DEVICE=eth0
  5. ONBOOT=yes
  6. IPADDR=192.168.1.100
  7. NETMASK=255.255.255.0
  8. GATEWAY=192.168.1.1
  9. DNS1=8.8.8.8

应用配置:

  1. systemctl restart NetworkManager
  2. nmcli connection reload

四、生产环境最佳实践

4.1 安全加固建议

  1. 定期轮换SSH密钥(建议每90天)
  2. 使用ssh-agent管理密钥缓存
  3. 配置/etc/hosts.allow限制访问源IP
  4. 启用防火墙规则:
    1. firewall-cmd --permanent --add-service=ssh
    2. firewall-cmd --reload

4.2 自动化部署脚本

创建setup_ssh.sh实现一键配置:

  1. #!/bin/bash
  2. # 参数检查
  3. [ $# -ne 2 ] && { echo "Usage: $0 <user> <remote_host>"; exit 1; }
  4. # 生成密钥(如果不存在)
  5. [ ! -f ~/.ssh/id_rsa ] && ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa
  6. # 部署公钥
  7. ssh-copy-id -i ~/.ssh/id_rsa.pub $1@$2
  8. # 测试连接
  9. if ssh $1@$2 "echo SSH配置成功"; then
  10. echo "免密登录配置完成"
  11. else
  12. echo "配置失败,请检查日志"
  13. exit 1
  14. fi

4.3 网络配置持久化

为确保重启后配置生效,需:

  1. 使用nmcli connection save保存配置
  2. 验证/etc/sysconfig/network-scripts/下生成正确的ifcfg文件
  3. 检查/etc/resolv.conf的DNS配置

五、进阶技巧

5.1 多密钥管理

为不同环境配置专用密钥:

  1. ssh-keygen -t rsa -b 4096 -C "prod-access" -f ~/.ssh/id_rsa_prod
  2. ssh-keygen -t rsa -b 4096 -C "dev-access" -f ~/.ssh/id_rsa_dev

~/.ssh/config中配置别名:

  1. Host prod
  2. HostName prod.example.com
  3. User admin
  4. IdentityFile ~/.ssh/id_rsa_prod
  5. Host dev
  6. HostName dev.example.com
  7. User developer
  8. IdentityFile ~/.ssh/id_rsa_dev

5.2 端口转发配置

通过SSH隧道实现安全访问:

  1. # 本地端口转发
  2. ssh -L 8080:internal.server:80 user@gateway
  3. # 动态端口转发(SOCKS代理)
  4. ssh -D 1080 user@remote_host

5.3 性能优化参数

~/.ssh/config中添加:

  1. Host *
  2. Compression yes
  3. Ciphers aes256-ctr,aes192-ctr,aes128-ctr
  4. MACs hmac-sha2-256,hmac-sha2-512

本文提供的配置方案经过实际生产环境验证,可帮助系统管理员快速构建安全可靠的远程管理通道。建议根据实际网络环境调整参数,并定期审计系统安全配置。对于大规模部署场景,可考虑结合配置管理工具(如Ansible)实现自动化批量配置。