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

相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏2 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
-梅2 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog2 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
琥珀色糖2 天前
SimlpeHttp
linux·服务器
其实防守也摸鱼2 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
第十人i2 天前
Linux 日志管理系统:journald 配置与优化
linux·服务器
布裘2 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境