当使用 SSH 公钥进行身份验证时遇到问题,可以通过查看 SSH 服务的日志来诊断问题。日志文件的位置和名称可能因操作系统和配置而异,但通常可以在以下位置找到:
在 Linux 系统上
-
系统日志文件:
/var/log/auth.log
(Debian/Ubuntu 系统)/var/log/secure
(Red Hat/CentOS 系统)/var/log/audit/audit.log
(使用auditd
的系统)
-
SSH 服务日志文件:
/var/log/sshd.log
(某些系统可能会有这个文件)
在 macOS 上
/var/log/system.log
在 FreeBSD 上
/var/log/auth.log
查看日志文件
你可以使用 tail
或 less
命令来查看日志文件。例如:
tail -f /var/log/auth.log
或者:
less /var/log/auth.log
增加日志详细程度
如果日志信息不够详细,可以增加 SSH 服务的日志级别。编辑 SSH 服务的配置文件 /etc/ssh/sshd_config
,找到或添加以下行:
LogLevel VERBOSE
然后重启 SSH 服务以应用更改:
sudo systemctl restart sshd
或者:
sudo service ssh restart
常见问题排查
-
公钥文件权限:
- 确保
~/.ssh
目录的权限为700
:chmod 700 ~/.ssh
- 确保
~/.ssh/authorized_keys
文件的权限为600
:chmod 600 ~/.ssh/authorized_keys
- 确保
-
公钥格式:
- 确保公钥文件格式正确,没有多余的空格或换行符。
-
SSH 配置:
- 确保
sshd_config
文件中启用了公钥认证:PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
- 确保
-
防火墙和 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
组,具体取决于你的系统配置)。
sudo chown -R naura:naura /home/naura
2. 检查和修复目录权限
确保 /home/naura
目录及其子目录和文件的权限是正确的。
-
/home/naura
目录的权限应为700
:chmod 700 /home/naura
-
~/.ssh
目录的权限应为700
:chmod 700 /home/naura/.ssh
-
~/.ssh/authorized_keys
文件的权限应为600
:chmod 600 /home/naura/.ssh/authorized_keys
3. 验证公钥文件内容
确保 ~/.ssh/authorized_keys
文件中的公钥格式正确,没有多余的空格或换行符。
4. 重新尝试 SSH 连接
完成上述步骤后,重新尝试使用公钥进行 SSH 连接:
ssh naura@naura
5. 检查日志
如果问题仍然存在,再次查看 SSH 日志文件以获取更多详细信息:
tail -f /var/log/auth.log
6. 其他可能的问题
-
SELinux:如果你的系统启用了 SELinux,确保 SELinux 没有阻止 SSH 访问。可以临时禁用 SELinux 进行测试:
sudo setenforce 0
-
防火墙:确保防火墙允许 SSH 连接。
通过以上步骤,你应该能够解决 SSH 公钥认证被拒绝的问题。如果问题仍然存在,请提供更多的日志信息以便进一步诊断。