ssh 公钥连接服务器失败,排查方向

当使用 SSH 公钥进行身份验证时遇到问题,可以通过查看 SSH 服务的日志来诊断问题。日志文件的位置和名称可能因操作系统和配置而异,但通常可以在以下位置找到:

在 Linux 系统上

  1. 系统日志文件

    • /var/log/auth.log(Debian/Ubuntu 系统)
    • /var/log/secure(Red Hat/CentOS 系统)
    • /var/log/audit/audit.log(使用 auditd 的系统)
  2. SSH 服务日志文件

    • /var/log/sshd.log(某些系统可能会有这个文件)

在 macOS 上

  • /var/log/system.log

在 FreeBSD 上

  • /var/log/auth.log

查看日志文件

你可以使用 tailless 命令来查看日志文件。例如:

sh 复制代码
tail -f /var/log/auth.log

或者:

sh 复制代码
less /var/log/auth.log

增加日志详细程度

如果日志信息不够详细,可以增加 SSH 服务的日志级别。编辑 SSH 服务的配置文件 /etc/ssh/sshd_config,找到或添加以下行:

sh 复制代码
LogLevel VERBOSE

然后重启 SSH 服务以应用更改:

sh 复制代码
sudo systemctl restart sshd

或者:

sh 复制代码
sudo service ssh restart

常见问题排查

  1. 公钥文件权限

    • 确保 ~/.ssh 目录的权限为 700

      sh 复制代码
      chmod 700 ~/.ssh
    • 确保 ~/.ssh/authorized_keys 文件的权限为 600

      sh 复制代码
      chmod 600 ~/.ssh/authorized_keys
  2. 公钥格式

    • 确保公钥文件格式正确,没有多余的空格或换行符。
  3. SSH 配置

    • 确保 sshd_config 文件中启用了公钥认证:

      sh 复制代码
      PubkeyAuthentication yes
      AuthorizedKeysFile .ssh/authorized_keys
  4. 防火墙和 SELinux

    • 确保防火墙允许 SSH 连接。
    • 如果使用 SELinux,确保 SELinux 没有阻止 SSH 访问。

通过查看日志文件和检查上述配置,通常可以找到并解决 SSH 公钥认证不生效的问题。

从日志信息来看,SSH 认证被拒绝的原因是 /home/naura 目录的权限或所有权不正确。具体错误信息如下:

复制代码
Aug  5 09:49:56 naura sshd[23677]: Authentication refused: bad ownership or modes for directory /home/naura

为了修复这个问题,你需要确保 /home/naura 目录及其子目录和文件的权限和所有权是正确的。以下是具体的步骤:

1. 检查和修复目录所有权

确保 /home/naura 目录及其子目录和文件的所有权是 naura 用户和 naura 组(或 users 组,具体取决于你的系统配置)。

sh 复制代码
sudo chown -R naura:naura /home/naura

2. 检查和修复目录权限

确保 /home/naura 目录及其子目录和文件的权限是正确的。

  • /home/naura 目录的权限应为 700

    sh 复制代码
    chmod 700 /home/naura
  • ~/.ssh 目录的权限应为 700

    sh 复制代码
    chmod 700 /home/naura/.ssh
  • ~/.ssh/authorized_keys 文件的权限应为 600

    sh 复制代码
    chmod 600 /home/naura/.ssh/authorized_keys

3. 验证公钥文件内容

确保 ~/.ssh/authorized_keys 文件中的公钥格式正确,没有多余的空格或换行符。

4. 重新尝试 SSH 连接

完成上述步骤后,重新尝试使用公钥进行 SSH 连接:

sh 复制代码
ssh naura@naura

5. 检查日志

如果问题仍然存在,再次查看 SSH 日志文件以获取更多详细信息:

sh 复制代码
tail -f /var/log/auth.log

6. 其他可能的问题

  • SELinux:如果你的系统启用了 SELinux,确保 SELinux 没有阻止 SSH 访问。可以临时禁用 SELinux 进行测试:

    sh 复制代码
    sudo setenforce 0
  • 防火墙:确保防火墙允许 SSH 连接。

通过以上步骤,你应该能够解决 SSH 公钥认证被拒绝的问题。如果问题仍然存在,请提供更多的日志信息以便进一步诊断。

相关推荐
运维大师9 小时前
【Linux运维极简教程】04-进程与服务管理
linux·运维
keke.shengfengpolang9 小时前
自动化考什么证书对就业有帮助?
运维·自动化
javajenius9 小时前
Masslynx 4.1安装包免费下载及详细安装教程
java·服务器·前端·其他
tebukaopu1489 小时前
ubuntu挂载nfs
linux·运维·ubuntu
雾沉川9 小时前
Netcatty 开源 SSH 客户端完整技术使用教程
运维·开源·ssh
石小千9 小时前
修改Docker Engine 存储路径
运维·docker·容器
珠海西格电力10 小时前
西格电力零碳园区管理系统:核心功能全解析,赋能园区低碳智能化落地
大数据·运维·网络·人工智能·信息可视化·能源
深盾科技_Virbox10 小时前
软件授权工具静默安装实践
java·运维·数据库·安全·软件需求
qq_4523962310 小时前
第二篇:《Jenkins 从零搭建:安装、配置与第一个 Pipeline》
java·运维·jenkins
Hui Baby10 小时前
kubeconfig 文件生成和赋权
运维