SSH登录问题小结

本文最后更新于 2025年4月17日 早上

背景

登录远程CentOS服务器的时候,出现了好几次登录不上的情况,提示语如下 <user>@<host>: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).,其中<user>,<host>是我的用户账号和主机地址,这里保密做了隐藏。

在网上查了很多资料,基本上说的是没有将PasswordAuthentication设为on,改PubkeyAuthentication yes,还有UsePAM yes的,也有的说到了权限问题等等。因为我遇到的情况不同,有的解决了问题有的没有解决,但最终都解决了,这里记录下小心得。

PS:操作系统是CentOS,其他的可能略有不同。

排查

应该来说,网上的答案有的时候确实能解决问题,但是不排除有瞎猫碰到死耗子的情况,因为我也确实碰到了没有解决掉的时候。直到最后我碰到了最终的神器命令:journalctl

journalctl的作用是查询系统journal(不知道该怎么翻译,旅程?),使用-u选项可以制定监测单元,对于ssh连接来说,参数是sshd-n选项确定查看日志条数,-f选项可以持续刷新日志。比如,命令:journalctl -u sshd -n 20 -f就可以查看最新的20条关于sshd的系统记录。

只要能够进入远程服务器(阿里云、腾讯云都有自己的web版终端),就可以通过这个查看到底是什么原因无法通过SSH连接的。

就我目前遇到的情况,需要检查这么几项:

  1. 确保保存在服务器端的公钥没有问题,位置也正确,如果没有改的话公钥是储存在/home/<username>/.ssh/authorized_keys文件里面的。
  2. 用户名下的.sshauthorized_keys文件的所有者和权限有没有问题,为了安全起见,如果其他用户拥有的权限过多,SSHD服务是会直接拒绝连接的。600就行。
  3. /etc/ssh/sshd_config下存在sshd的相关配置,里面也有几个要注意的:
    1. HostKey 主机key,只需要一个也就够了,我偏向于选择rsa
    2. PubkeyAuthentication 应当是yes
    3. PermitRootLogin 为了安全,建议选择no
    4. AllowUsrs 允许哪些用户登录,如果启用了这个选项,即使PermitRootLogin是yes,这里不添加root账户的话,也是不允许root登录的

SSH登录问题小结
https://www.xiebingyuan.cn/2021/11/134155d92675/
作者
bingyuan
发布于
2021年11月20日
更新于
2025年4月17日
许可协议