我正在尝试设置无密码 SSH 登录,但似乎无法正常工作。以下是我目前所做的:
- 用于
ssh-keygen -t rsa
生成一对密钥 - 在服务器上创建
~/.ssh/authorized_keys
并将公钥转储到该文件中 chmod 700 ~
chmod 700 ~/.ssh
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
但是他们可能还有其他东西。您可以探索您的主目录并显示隐藏文件以进一步探索。
一切顺利!