CentOS7.4 SSH免密登录配置指南
免密登录基本原理
SSH免密登录通过非对称加密技术实现认证,客户端生成公钥/私钥对后,将公钥部署至目标服务器的~/.ssh/authorized_keys
文件。后续连接时,服务端使用公钥验证客户端持有的私钥,替代传统密码验证。
客户端密钥生成流程
ssh-keygen -t rsa -b 4096
# 默认保存至~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)
# 生成过程可设置密钥保护密码(非必须)
执行后检查~/.ssh
目录,确认成功生成密钥文件。
服务器端公钥部署
方法一:ssh-copy-id自动化部署
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_ip
# 按提示输入服务器用户密码
# 公钥将自动追加至服务器~/.ssh/authorized_keys
方法二:手动部署
- 复制本地公钥内容:
cat ~/.ssh/id_rsa.pub
- 登录服务器创建目录:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
- 写入公钥:
echo "公钥内容" >> ~/.ssh/authorized_keys
- 设置文件权限:
chmod 600 ~/.ssh/authorized_keys
权限错误将导致认证失败,需确保:用户家目录权限≤755,.ssh
目录权限为700,authorized_keys
文件权限为600。
服务端SSH配置验证
sudo vi /etc/ssh/sshd_config
# 确认以下参数配置:
# PubkeyAuthentication yes
# AuthorizedKeysFile .ssh/authorized_keys
修改后重启SSH服务:sudo systemctl restart sshd
免密登录功能测试
ssh user@remote_ip
# 成功登录即表示配置正确
# 调试命令:ssh -vT user@remote_ip
安全强化措施
- 禁用密码认证:
/etc/ssh/sshd_config
中设置PasswordAuthentication no
- 限制登录用户:
AllowUsers your_username
- 定期轮换密钥:每3-6个月更新密钥对
- 私钥文件加密:生成密钥时设置保护密码
排错要点
- 日志检查:
tail -f /var/log/secure
- 文件权限验证:确认目录权限700、文件权限600
- SELinux影响:
restorecon -Rv ~/.ssh
重置安全上下文 - 公钥格式:确保文件为单行文本无多余空格