尽管接受了密钥,但 SSH 连接要求输入密码

Sam*_*ens 15 ssh rsa

即使我的 SSH 密钥看起来已被接受,我也收到了输入密码的提示。据我所知,下面日志中的“服务器接受密钥:pkalg ssh-rsa blen 277”行表示我的密钥已被接受。

以下是调试日志:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/sam/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: fp <<HASH REDACTED>>
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/sam/.ssh/id_dsa
debug1: Trying private key: /home/sam/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 1
Run Code Online (Sandbox Code Playgroud)

非常感谢帮助,我发现的每个遇到 SSH 问题的人都在我看到的较早时间点失败。

Sco*_*ack 13

您的私钥肯定没有被接受,只是尝试过。基于 SSH 密钥的身份验证可能会以多种方式失败,并且日志记录并不是那么好,因此调试这个特定问题是我个人的烦恼之一。我发现错误通常是以下情况之一造成的。

  • 你的~/.ssh/authorized_keys文件太开放了。为了您自己的保护,sshd试图保护您免受自己的伤害。如果您的授权密钥文件的权限,那么它将无法通过身份验证。运行chmod -R go-rwx ~/.ssh
  • 您的公钥~/.ssh/authorized_keys格式不正确。这可能是许多问题的结果,但最常见的是复制粘贴问题。某些终端在跨屏幕复制/粘贴时,会将换行解释为新行。authorized_keys文件中的每个条目都必须是一行。您可以通过更改终端仿真器的大小并查看是否有中断、将 的输出wc -l ~/.ssh/authorized_keys应该在那里的键数进行比较或任何最适合您的方式来检查这一点。只要确保每个键都是一行就可以了。

  • 对于任何来这里试图了解“访问过于开放”问题根源的人,我在这里发帖是因为我自己进行了大量搜索才找到它。这是由 `sshd_config` 中的 [`StrictModes`](https://man.openbsd.org/sshd_config#StrictModes) 设置强制执行的。不建议禁用,但有助于故障排除。 (2认同)

Dan*_*son 7

您粘贴的 ssh -v 输出表明它尝试使用该键,但没有奏效,因此它转向键盘交互。

您是否检查了要连接的服务器上的身份验证日志?(例如,/var/log/auth.log)。如果您在远程端的设置不正确,例如错误的权限,那么 ssh -v(或 -vv 或 -vvv)不会告诉您这一点,但会由 sshd 记录。

  • /var/log/auth.log 为我提供了答案:“身份验证被拒绝:目录 /root 的所有权或模式错误” (2认同)

小智 5

就我而言,文件/var/log/authlog显示:

[ID 800047 auth.info] Authentication refused: bad ownership or modes for directory 
Run Code Online (Sandbox Code Playgroud)

我已经检查了正确的所有权/权限,.ssh$HOME有 777 个权限。在$HOME允许的 sftp上设置 755 权限才能工作。再次感谢。