即使我的 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
与应该在那里的键数进行比较或任何最适合您的方式来检查这一点。只要确保每个键都是一行就可以了。您粘贴的 ssh -v 输出表明它尝试使用该键,但没有奏效,因此它转向键盘交互。
您是否检查了要连接的服务器上的身份验证日志?(例如,/var/log/auth.log)。如果您在远程端的设置不正确,例如错误的权限,那么 ssh -v(或 -vv 或 -vvv)不会告诉您这一点,但会由 sshd 记录。
小智 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 权限才能工作。再次感谢。