808 字
4 分钟
SSH 免密登录配置问题

SSH 免密登录配置问题#

问题诊断与解决方案#

1. 检查 SSH 目录和文件权限#

SSH 对文件和目录权限有严格的安全要求。请确保在 192.168.88.20 主机上执行以下检查:

Terminal window
# 在 192.168.88.20 上执行这些命令
# 检查 .ssh 目录权限(必须是 700)
ls -ld ~/.ssh
# 检查 authorized_keys 文件权限(必须是 600)
ls -l ~/.ssh/authorized_keys
# 检查用户家目录权限(必须是 755 或更严格)
ls -ld ~

如果权限不正确,请使用以下命令修复:

Terminal window
# 修复权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 755 ~ # 家目录权限

2. 检查 SSH 服务配置#

在 192.168.88.20 上检查 SSH 服务配置:

Terminal window
# 检查 SSH 服务配置
sudo grep -E "PubkeyAuthentication|AuthorizedKeysFile" /etc/ssh/sshd_config
# 确保以下配置正确:
# PubkeyAuthentication yes
# AuthorizedKeysFile .ssh/authorized_keys

如果需要修改配置:

Terminal window
# 编辑 SSH 配置
sudo vim /etc/ssh/sshd_config
# 重启 SSH 服务
sudo systemctl restart sshd

3. 检查 SELinux 状态#

SELinux 可能会阻止 SSH 密钥认证:

Terminal window
# 检查 SELinux 状态
sestatus
# 如果是 enforcing 状态,尝试暂时禁用 SELinux 测试
sudo setenforce 0
# 然后尝试 SSH 连接,如果成功,说明是 SELinux 问题
# 永久解决方案是调整 SELinux 策略或设置为 permissive 模式

4. 详细调试 SSH 连接#

使用详细模式连接,查看具体错误信息:

Terminal window
# 从 MHA 主机连接到 20 主机,使用详细输出
ssh -vvv admin@192.168.88.20

关注输出中的以下关键信息:

  • 是否尝试使用公钥认证
  • 公钥是否被接受
  • 认证失败的具体原因

5. 检查公钥格式和内容#

确保 authorized_keys 文件中的公钥格式正确:

Terminal window
# 在 192.168.88.20 上检查公钥文件
cat ~/.ssh/authorized_keys
# 确保每行一个完整的公钥,没有多余字符或换行
# 公钥格式应为:ssh-rsa AAAAB3NzaC1yc2EAAA... comment

6. 重新复制公钥#

尝试重新将公钥复制到 192.168.88.20:

Terminal window
# 从 MHA 主机执行
ssh-copy-id -i ~/.ssh/id_rsa.pub admin@192.168.88.20

或者手动复制:

Terminal window
# 在 MHA 主机上获取公钥内容
cat ~/.ssh/id_rsa.pub
# 然后登录到 192.168.88.20,将公钥内容添加到 ~/.ssh/authorized_keys

7. 检查用户和组所有权#

确保文件和目录的所有权正确:

Terminal window
# 在 192.168.88.20 上检查
ls -la ~/
ls -la ~/.ssh/
ls -la ~/.ssh/authorized_keys
# 确保所有文件和目录属于 admin 用户和组
# 如果不是,使用以下命令修复:
sudo chown -R admin:admin ~/.ssh

8. 检查 SSH 日志#

查看 SSH 服务的详细日志:

Terminal window
# 在 192.168.88.20 上查看 SSH 日志
sudo tail -f /var/log/secure
# 或者使用 journalctl(取决于系统)
sudo journalctl -u sshd -f

尝试连接时观察日志输出,寻找认证失败的具体原因。

总结与建议#

根据您的描述,问题可能出现在以下几个方面(按可能性排序):

  1. 文件权限问题(最常见)
  2. SELinux 限制
  3. SSH 服务配置问题
  4. 公钥格式错误

建议您按照以下顺序排查:

  1. 首先检查文件和目录权限
  2. 使用 ssh -vvv 查看详细连接过程
  3. 检查 SSH 服务日志
  4. 检查 SELinux 状态

如果以上方法都不能解决问题,请尝试完全重新设置 SSH 密钥:

Terminal window
# 在 MHA 主机上
rm -rf ~/.ssh
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
# 重新复制到所有主机,包括 192.168.88.20
for host in 10 20 30; do
ssh-copy-id admin@192.168.88.$host
done

SSH 免密登录配置问题
https://fuwari.vercel.app/posts/linux基础/ssh免密登录配置问题/
作者
肥猫少杰
发布于
2026-06-09
许可协议
CC BY-NC-SA 4.0