一次目录权限导致的ssh无法连接问题
问题
之前通过密钥能正常连接ssh的linux机器,现在无法连接
❯ ssh ws
root@ws: Permission denied (publickey).
初步排查
-
~/.ssh/authorized_keys
中检查公钥,发现还在且无误 -
/etc/ssh/sshd_config
中检查ssh服务的配置,发现和常用的配置并无区别 -
检查
~/.ssh/authorized_keys
和~/.ssh
的权限,分别是600和700无误 -
检查了客户端
~/.ssh/config
配置,并无发现有什么特殊的错误配置,换另一台原来能正常连接的机器发现也报同样错误无法连接了。初步排除客户端问题 -
verbose mode日志,能看到尝试了各种公钥,但是认证并未成功。但是从这里并不能直接看出原因
❯ ssh ws -v OpenSSH_9.4p1, LibreSSL 3.3.6 ... debug1: Authentications that can continue: publickey debug1: Trying private key: ... root@ws: Permission denied (publickey).
发现问题
上述ssh常见的配置都检查确认无误后,只能更进一步看更详细的日志了
(base) ➜ / tail -f /var/log/auth.log
Feb 9 13:17:01 workstation CRON[1766]: pam_unix(cron:session): session closed for user root
Feb 9 13:36:20 workstation sshd[1771]: Authentication refused: bad ownership or modes for directory /root
Feb 9 13:36:20 workstation sshd[1771]: Authentication refused: bad ownership or modes for directory /root
Feb 9 13:36:22 workstation sshd[1771]: Connection closed by authenticating user root 10.10.10.1 port 54372 [preauth]
...
从这里可以看出根本原因是/root
目录的权限出现问题了
drwxr-xr-x 20 501 staff 4.0K Feb 9 13:50 root
原因
恍然大悟,出问题之前曾尝试使用idea的deployment功能向这台服务器upload文件,第一次目录选错了,导致idea向/root
直接传文件,它顺带就把/root
的权限给改了。后来把deployment的目标目录更正成了/root
下的某个子目录,但是权限问题就这么留下了。
修复
chown root:root /root
总结
除了注意~/.ssh
和~/.ssh/authorized_keys
的权限和归属,~
的权限归属同样重要!
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。