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 公钥认证被拒绝的问题。如果问题仍然存在,请提供更多的日志信息以便进一步诊断。

相关推荐
黄沐阳4 小时前
AP配置(leaderAP组网模式)
运维·网络·智能路由器
可变羽翼核心6 小时前
Steam饥荒联机版多人服务器搭建全解析 -- 阿里云Linux系统构建云服务器
linux·运维·服务器
我科绝伦(Huanhuan Zhou)7 小时前
DM8日常运维命令总结(四)
运维
是垚不是土7 小时前
JumpServer 堡垒机全流程搭建指南及常见问题解决方案
运维·安全·网络安全·github·系统安全·创业创新
yangrenrui8 小时前
GitLab:一站式 DevOps 平台的全方位解析
运维·gitlab·devops
AKAMAI8 小时前
运维逆袭志·第1期 | 数据黑洞吞噬一切 :自建系统的美丽陷阱
运维·人工智能·云计算
小孙姐8 小时前
Linux-Day12.DNS服务
linux·运维·服务器
小孙姐8 小时前
Linux-Day07.磁盘空间管理
linux·运维·服务器
厦门辰迈智慧科技有限公司9 小时前
水库安全“守护者”:智能雨水情监测预报系统
运维·网络·物联网·安全·监测