SSH连接要求输入密码,尽管可以接受密钥


12

即使看起来我的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

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

Answers:


11

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

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

7

您粘贴的ssh -v输出表明它尝试使用该键,但是该键不起作用,因此它继续进行键盘交互。

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


/var/log/auth.log为我掌握了答案:“身份验证被拒绝:目录/ root的所有权或模式错误”
kevlar1818 '18

5

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

[ID 800047 auth.info] Authentication refused: bad ownership or modes for directory 

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


2

如果您有权访问服务器(直接或通过其他登录名),请检查服务器登录(例如)/var/log/sshd/var/log/secure根据您的系统

通常是由~/.ssh/authorized_keys文件权限错误引起的。确保它不是世界可读的,但至关重要的是,运行sshd的用户(有时是服务用户)可以读取它


1
哪个系统使用/var/log/sshd?我知道的系统使用/var/log/auth.log/var/log/secure
kasperd

1

~/.ssh/authorized_keys在远程的权限很重要(600对于我的系统RHEL和Solaris)

远程中主目录的权限很重要(700在我的系统中)

最后sshd,在另一端口上以调试模式在远程计算机上运行可能会有所帮助:

sudo /usr/sbin/sshd -p 5555 -dd

5555是一个示例端口,您可以更改它。有关这方面的更多信息,请参见:http : //ubuntuforums.org/archive/index.php/t-2219973.html


0

我发现使用该sshd服务存在问题。为避免此问题,请使用停止sshd服务,service sshd stop然后sshd使用命令从命令提示符启动守护程序sudo /usr/sbin/sshd


0

尝试

/sbin/restorecon -r /root/.ssh

设置权限可能存在问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.