在Linux系统中配置互信(SSH无密码登录)是管理多台服务器、实现自动化运维的关键技术,以下为详细操作指南,严格遵循OpenSSH官方规范,兼顾安全性与实用性:
互信原理
通过非对称加密实现身份验证:
- 私钥(
~/.ssh/id_rsa
):本地保留,需严格保密 - 公钥(
~/.ssh/id_rsa.pub
):分发到目标服务器 - 认证流程:客户端用私钥签名 → 服务端用公钥验证
配置步骤(以两台服务器为例)
步骤1:生成密钥对(客户端操作)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # -b指定密钥长度
- 连续回车三次(默认不设密码)
- 生成文件:
~/.ssh/id_rsa
(私钥)
~/.ssh/id_rsa.pub
(公钥)
步骤2:分发公钥到目标服务器
方法1:ssh-copy-id(推荐)
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
输入目标服务器密码后自动完成配置
方法2:手动复制(无ssh-copy-id时)
# 目标服务器验证权限 ssh user@remote_host "chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys"
步骤3:验证互信
ssh user@remote_host hostname # 应直接返回目标主机名
排错指南
权限错误(最常见)
目标服务器需严格权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chown -R $USER:$USER ~/.ssh
SELinux导致问题
临时禁用检测:
restorecon -Rv ~/.ssh # 重置SELinux上下文 setenforce 0 # 临时关闭SELinux(需root)
配置文件检查
编辑目标服务器/etc/ssh/sshd_config
确认:
PubkeyAuthentication yes # 启用公钥认证 AuthorizedKeysFile .ssh/authorized_keys # 公钥路径 PasswordAuthentication no # 增强安全(可选)
重启服务:sudo systemctl restart sshd
安全强化措施
- 私钥保护
- 设置密钥密码:
ssh-keygen -p -f ~/.ssh/id_rsa
- 禁止共享私钥
- 设置密钥密码:
- 服务器端防护
- 限制用户:
/etc/ssh/sshd_config
中添加AllowUsers your_username
- 更改默认端口:
Port 2222
- 限制用户:
- 密钥轮换
定期更新密钥对:生成新密钥后删除旧公钥
高级场景
多服务器批量配置
使用for
循环批量分发:
for host in server{1..5}; do ssh-copy-id -i ~/.ssh/id_rsa.pub admin@$host done
指定不同密钥
ssh -i ~/.ssh/special_key.pem user@host # 临时指定 # 或配置~/.ssh/config: Host special_host HostName 192.168.1.10 User admin IdentityFile ~/.ssh/special_key
注意事项
- 禁止root直接登录:通过普通用户登录后
sudo
- 防火墙规则:确保目标服务器SSH端口开放
- 日志监控:定期检查
/var/log/auth.log
异常登录
引用说明
本文操作基于OpenSSH 8.4p1标准协议,参考文档:
- OpenSSH官方手册(https://www.openssh.com/manual.html)
- Linux man-pages项目(https://www.kernel.org/doc/man-pages/)
配置方法经CentOS/Ubuntu多版本验证,符合NIST安全建议。
通过上述步骤,可建立安全可靠的SSH互信环境,首次配置建议在测试环境操作,生产环境务必做好权限控制与备份。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4357.html