如何调试公钥 SSH 身份验证失败

如何调试公钥 SSH 身份验证失败

我正在尝试设置无密码 SSH 登录,但似乎无法正常工作。以下是我目前所做的:

  1. 用于ssh-keygen -t rsa生成一对密钥
  2. 在服务器上创建~/.ssh/authorized_keys并将公钥转储到该文件中
  3. chmod 700 ~
  4. chmod 700 ~/.ssh
  5. chmod 600 ~/.ssh/authorized_keys

当我尝试使用私钥登录时,我获得以下输出ssh -vvv

debug1: Next authentication method: publickey
debug1: Trying private key: /path/to/private-key
debug1: read PEM private key done: type RSA
debug3: sign_and_send_pubkey: RSA [KEY_FINGERPRINT_HERE]
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: password,publickey
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password

我很确定服务器运行的是 FreeBSD,但它不是我的,而且我没有 root 权限。您知道这里出了什么问题吗?或者我可以尝试什么来让它正常工作?

答案1

您为什么要对服务器上的 HOME 文件夹进行 chmod 操作?没有必要这样做,而且我认为这可能会妨碍您的连接尝试。请将其恢复为 755,然后重试。

答案2

好吧,这个问题的“解决方案”最终与主机有关。该服务器由一家名为 HybridCluster 的公司运营。我仍然不确定为什么,但为了在他们的服务器上使用公钥身份验证,必须通过他们的控制面板界面添加公钥,并且不是手动添加到~/.ssh/authorized_keys文件中。

我认为这与他们动态切换硬件有关,因此主机指纹发生变化导致密钥被拒绝,但我真的不能肯定地说。

无论如何,感谢所有提供帮助的人,希望这能够在未来帮助一些可怜的 HybridCluster 用户。

答案3

我相当确定问题出在将公钥放入 authorized_keys 文件中。您的假设是您的托管公司已将其配置为 AuthorizedKeyFile。如果您有 root 访问权限,则应检查 ssh 服务器设置 - 通常是 sshd_config 文件(debian 上为 /etc/ssh/sshd_config)。

您假设的默认设置是:

AuthorizedKeysFile     %h/.ssh/authorized_keys

但是他们可能还有其他东西。您可以探索您的主目录并显示隐藏文件以进一步探索。

一切顺利!

相关内容