一、SSH免密登录配置全流程
1.1 本地密钥对生成
在本地控制台执行以下命令生成RSA密钥对,建议使用4096位加密强度提升安全性:
ssh-keygen -t rsa -b 4096 -C "admin@example.com"
执行过程中会提示:
- 密钥存储路径(默认
~/.ssh/) - 密钥密码(直接回车留空)
生成后需确认文件权限:
chmod 600 ~/.ssh/id_rsa # 私钥权限chmod 644 ~/.ssh/id_rsa.pub # 公钥权限
1.2 远程公钥部署方案
方案一:自动化部署(推荐)
使用ssh-copy-id工具自动完成公钥传输与配置:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
该命令会执行以下操作:
- 将公钥追加到
~/.ssh/authorized_keys - 自动设置正确的文件权限
- 验证SSH服务配置
方案二:手动部署流程
对于不支持ssh-copy-id的环境,可分步操作:
# 1. 传输公钥文件scp ~/.ssh/id_rsa.pub user@remote_host:/tmp/# 2. 远程执行配置ssh user@remote_host << EOFmkdir -p ~/.sshcat /tmp/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keyschmod 700 ~/.sshrm -f /tmp/id_rsa.pubEOF
1.3 连接测试与验证
执行以下命令验证免密登录:
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)错误时,执行:
# 恢复默认安全上下文restorecon -Rv ~/.ssh# 检查SELinux状态getenforce
如需临时禁用(测试用):
setenforce 0
2.3 SSH服务配置审计
检查关键配置项(/etc/ssh/sshd_config):
PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keysPasswordAuthentication no # 建议禁用密码认证
配置修改后需重启服务:
systemctl restart sshdjournalctl -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:
nmcli connection modify eth0 \ipv4.method manual \ipv4.addresses 192.168.1.100/24 \ipv4.gateway 192.168.1.1 \ipv4.dns "8.8.8.8,8.8.4.4" \connection.autoconnect yesnmcli connection up eth0
3.3 传统配置文件方法
编辑/etc/sysconfig/network-scripts/ifcfg-eth0:
TYPE=EthernetBOOTPROTO=noneNAME=eth0DEVICE=eth0ONBOOT=yesIPADDR=192.168.1.100NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=8.8.8.8
应用配置:
systemctl restart NetworkManagernmcli connection reload
四、生产环境最佳实践
4.1 安全加固建议
- 定期轮换SSH密钥(建议每90天)
- 使用
ssh-agent管理密钥缓存 - 配置
/etc/hosts.allow限制访问源IP - 启用防火墙规则:
firewall-cmd --permanent --add-service=sshfirewall-cmd --reload
4.2 自动化部署脚本
创建setup_ssh.sh实现一键配置:
#!/bin/bash# 参数检查[ $# -ne 2 ] && { echo "Usage: $0 <user> <remote_host>"; exit 1; }# 生成密钥(如果不存在)[ ! -f ~/.ssh/id_rsa ] && ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa# 部署公钥ssh-copy-id -i ~/.ssh/id_rsa.pub $1@$2# 测试连接if ssh $1@$2 "echo SSH配置成功"; thenecho "免密登录配置完成"elseecho "配置失败,请检查日志"exit 1fi
4.3 网络配置持久化
为确保重启后配置生效,需:
- 使用
nmcli connection save保存配置 - 验证
/etc/sysconfig/network-scripts/下生成正确的ifcfg文件 - 检查
/etc/resolv.conf的DNS配置
五、进阶技巧
5.1 多密钥管理
为不同环境配置专用密钥:
ssh-keygen -t rsa -b 4096 -C "prod-access" -f ~/.ssh/id_rsa_prodssh-keygen -t rsa -b 4096 -C "dev-access" -f ~/.ssh/id_rsa_dev
在~/.ssh/config中配置别名:
Host prodHostName prod.example.comUser adminIdentityFile ~/.ssh/id_rsa_prodHost devHostName dev.example.comUser developerIdentityFile ~/.ssh/id_rsa_dev
5.2 端口转发配置
通过SSH隧道实现安全访问:
# 本地端口转发ssh -L 8080:internal.server:80 user@gateway# 动态端口转发(SOCKS代理)ssh -D 1080 user@remote_host
5.3 性能优化参数
在~/.ssh/config中添加:
Host *Compression yesCiphers aes256-ctr,aes192-ctr,aes128-ctrMACs hmac-sha2-256,hmac-sha2-512
本文提供的配置方案经过实际生产环境验证,可帮助系统管理员快速构建安全可靠的远程管理通道。建议根据实际网络环境调整参数,并定期审计系统安全配置。对于大规模部署场景,可考虑结合配置管理工具(如Ansible)实现自动化批量配置。