808 字
4 分钟
SSH 免密登录配置问题
SSH 免密登录配置问题
问题诊断与解决方案
1. 检查 SSH 目录和文件权限
SSH 对文件和目录权限有严格的安全要求。请确保在 192.168.88.20 主机上执行以下检查:
# 在 192.168.88.20 上执行这些命令# 检查 .ssh 目录权限(必须是 700)ls -ld ~/.ssh
# 检查 authorized_keys 文件权限(必须是 600)ls -l ~/.ssh/authorized_keys
# 检查用户家目录权限(必须是 755 或更严格)ls -ld ~如果权限不正确,请使用以下命令修复:
# 修复权限chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keyschmod 755 ~ # 家目录权限2. 检查 SSH 服务配置
在 192.168.88.20 上检查 SSH 服务配置:
# 检查 SSH 服务配置sudo grep -E "PubkeyAuthentication|AuthorizedKeysFile" /etc/ssh/sshd_config
# 确保以下配置正确:# PubkeyAuthentication yes# AuthorizedKeysFile .ssh/authorized_keys如果需要修改配置:
# 编辑 SSH 配置sudo vim /etc/ssh/sshd_config
# 重启 SSH 服务sudo systemctl restart sshd3. 检查 SELinux 状态
SELinux 可能会阻止 SSH 密钥认证:
# 检查 SELinux 状态sestatus
# 如果是 enforcing 状态,尝试暂时禁用 SELinux 测试sudo setenforce 0
# 然后尝试 SSH 连接,如果成功,说明是 SELinux 问题# 永久解决方案是调整 SELinux 策略或设置为 permissive 模式4. 详细调试 SSH 连接
使用详细模式连接,查看具体错误信息:
# 从 MHA 主机连接到 20 主机,使用详细输出ssh -vvv admin@192.168.88.20关注输出中的以下关键信息:
- 是否尝试使用公钥认证
- 公钥是否被接受
- 认证失败的具体原因
5. 检查公钥格式和内容
确保 authorized_keys 文件中的公钥格式正确:
# 在 192.168.88.20 上检查公钥文件cat ~/.ssh/authorized_keys
# 确保每行一个完整的公钥,没有多余字符或换行# 公钥格式应为:ssh-rsa AAAAB3NzaC1yc2EAAA... comment6. 重新复制公钥
尝试重新将公钥复制到 192.168.88.20:
# 从 MHA 主机执行ssh-copy-id -i ~/.ssh/id_rsa.pub admin@192.168.88.20或者手动复制:
# 在 MHA 主机上获取公钥内容cat ~/.ssh/id_rsa.pub
# 然后登录到 192.168.88.20,将公钥内容添加到 ~/.ssh/authorized_keys7. 检查用户和组所有权
确保文件和目录的所有权正确:
# 在 192.168.88.20 上检查ls -la ~/ls -la ~/.ssh/ls -la ~/.ssh/authorized_keys
# 确保所有文件和目录属于 admin 用户和组# 如果不是,使用以下命令修复:sudo chown -R admin:admin ~/.ssh8. 检查 SSH 日志
查看 SSH 服务的详细日志:
# 在 192.168.88.20 上查看 SSH 日志sudo tail -f /var/log/secure
# 或者使用 journalctl(取决于系统)sudo journalctl -u sshd -f尝试连接时观察日志输出,寻找认证失败的具体原因。
总结与建议
根据您的描述,问题可能出现在以下几个方面(按可能性排序):
- 文件权限问题(最常见)
- SELinux 限制
- SSH 服务配置问题
- 公钥格式错误
建议您按照以下顺序排查:
- 首先检查文件和目录权限
- 使用
ssh -vvv查看详细连接过程 - 检查 SSH 服务日志
- 检查 SELinux 状态
如果以上方法都不能解决问题,请尝试完全重新设置 SSH 密钥:
# 在 MHA 主机上rm -rf ~/.sshssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
# 重新复制到所有主机,包括 192.168.88.20for host in 10 20 30; do ssh-copy-id admin@192.168.88.$hostdone SSH 免密登录配置问题
https://fuwari.vercel.app/posts/linux基础/ssh免密登录配置问题/