ssh不再允许公钥认证

我的机器最近停止接受传入的公钥认证。 我有一个ubuntu 11.04桌面,我从Windows机器上进入。 我使用putty与选美。 我能够连接但只能使用交互式密码validation,而不能使用我设置的rsa密钥。

我已经validation了密钥列在〜/ .ssh / authorized_keys中。 我该如何解决这个问题以及如何检查?

如果公钥validation不起作用:请确保在服务器端,您的主目录( ~ ), ~/.ssh目录和~/.ssh/authorized_keys文件都只能由其所有者写入。 特别是,它们都不能由组写入(即使用户在组中是唯一的)。 chmod 755chmod 700没问题, chmod 770不行。

出现问题时要检查的内容:

  • 运行ssh -vvv以查看大量调试输出。 如果您发布询问无法连接ssh的问题,请包含此输出(您可能希望匿名主机名和用户名)。
  • 如果可以,请检查/var/log/auth.log的服务器日志。
  • 如果公钥validation不起作用,请再次检查权限,尤其是组位(参见上文)。

我碰到了同样的事情,最终发现这是因为我加密了我的主目录。 在您登录之前,SSH无法读取authorized_keys文件,因此基本上它会强制您首先进行密码validation。 请参阅以下链接中有关加密主目录的部分:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory

我会确保你在/ etc / ssh / sshd_config中的设置是正确的。

要强制仅使用PKI并禁止密码找到该行

 #PasswordAuthentication yes 

在您的文件中,取消注释并将其设置为

 PasswordAuthenticate no 

我还会仔细阅读设置的平衡,以确保它们有意义。 特别是,尽量确保使用RSA密钥,因为DSA会被泄露。

如果您检查目录的权限,并且有一个“。” 在他们之后,那么你可能启用了selinux,这将与密钥交换混乱,并默认为手动密码识别。

您可以按照以下说明禁用SELinux进行故障排除: http : //www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html ,或者只需编辑/ etc / selinux / config文件并将其从“强制执行”更改为“禁用”。

希望这可以帮助。

我通过在/ etc / ssh / sshd_config中取消注释“PasswordAuthentication yes”来修复此问题。

由于需要对两台不同机器之间的通信进行故障排除,我在客户端的~/.ssh有两个私钥。

我没有使用~/.ssh/identity的相应私钥配置每个服务器主机,而是为所有主机配置了辅助(在这种情况下是错误的)密钥:

 Host * IdentityFile ~/.ssh/identity_b 

更正~/.ssh/identity解决了问题:

 Host a IdentityFile ~/.ssh/identity_a Host b IdentityFile ~/.ssh/identity_b 

问题的一个可能原因是您有DSA密钥但现在SSH(显然)默认需要RSA密钥。 升级到16.04时我遇到了问题。 你可以在这里看到更多,但简短的回答是将以下内容添加到~/.ssh/config

 PubkeyAcceptedKeyTypes ssh-dss 

我只是遇到了同样的问题但是用chmod更改权限没有帮助,因为事实certificate我没有~/.ssh/authorized_keys文件的所有权。 您可以使用以下命令更改.ssh目录的所有权:

 sudo chown -R "$USER" ~/.ssh 

不知怎的,这对我有用:

root @ kaiser:〜#vim / etc / ssh / sshd_config

将此行从yes更改为no 28 StrictModes no

再试一次

sysadmin @ suselinux1:〜> con sysadmin kaiser欢迎使用Ubuntu 12.04.1 LTS(GNU / Linux 3.2.0-25-generic i686)

  • 文档: https : //help.ubuntu.com/

上次登录时间:2012年1月9日星期五15:40:11来自10.1.3.25 sysadmin @ kaiser:〜$ date vie nov 9 17:53:11 CST 2012 sysadmin @ kaiser:〜$