腻子:获取服务器拒绝我们的关键错误

我使用puttygen.exe创build密钥对(客户端是Windows 8)。 在服务器上(Ubuntu 12.04.3 LTS),我把公钥放在~/.ssh/authorized_keys 。 公钥是这样的:

 ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAopfM6RHOgnuc4Aftn3t4k5UIAT3StCAbn/vg/IMbphbXadshC+79sIlRq3P4zGzMjFTP4hKnzu6ehLV5lmj/qorq3SKT+bPO5Qrac3VbIlrGvuBFDDjP82I2Hwg3HzlsFTstqk++KToapaTYZ7jENEYyPl2wnzITJnt//+4U1o6juoXTKgdNE02hHnRZyHOV/bnkZyJJCEwJv5U0eXSThQnhmXtUxGT8U0HQNFiXfqIIVllhWiCnyrhhIaKz/CIJNAd2VmzyJzQtJtTQX8aWSNVrZju6Sv2/RncTNvsACdNgjjh/FH8PQXaep00jlJ3MOdsC8vz6VSPFbh6iKy1oLQ== rsa-key-20131231 

所以这是正确的(一行,没有评论,以ssh-rsa开头等)

.ssh目录权限级别为700,authorized_keys文件权限为600.我尝试login的实际用户拥有目录和文件。

当我尝试连接时,我得到'server refused our key'和服务器要求input密码。 就这样。 尝试使用密钥login时,没有任何内容logging到/var/log/auth.log

我已经到处寻找,所有的文章和提示都提到了为文件/目录设置chmod 600和700并正确地格式化密钥。 我已经做了所有这些仍然“拒绝我们的关键”的错误,我没有想法。

好的,我的钥匙有一个小小的错字。 显然,粘贴到文件的第一个字母被切断,并开始与sh-rsa而不是ssh-rsa。

nrathathaus – 你的答案是非常有帮助的,非常感谢,这个答案是相信你:)我喜欢你说,并在sshd_conf中设置:

 LogLevel DEBUG3 

通过查看日志,我意识到sshd正确读取密钥,但由于标识符不正确而拒绝。

添加一些想法作为其他答案帮助,但不是完全适合。

首先,正如接受的答案中提到的,编辑

 /etc/ssh/sshd_config 

并设置日志级别:

 LogLevel DEBUG3 

然后尝试进行身份validation,如果失败,请查找日志文件:

 /var/log/secure 

它会有你正在寻找的错误。

在我的情况下,我不得不将/ home / user的权限从0755更改为0700。

我添加了这个答案来帮助像我这样的人,他花了几个小时在互联网上search而没有成功。

您的家庭文件夹可能会被encryption。

或者就此而言,您的“authorized_keys”文件嵌套在其中的任何文件夹。 男人,这会节省我很多时间。 要检查,去执行

 ls -A 

在您想要确定的encryption状态的目录上。 如果文件夹包含一个名为“.encryptfs”的文件夹,那么答案是,该文件夹是encryption的。 这将阻碍您访问包​​含validation所需公共ssh密钥的“authorized_keys”文件的能力。

要解决这个问题,请将“authorized_key”文件放在不包含encryption的目录树中。

我发现的简单解决scheme是将authorized_keys文件从隐藏的.ssh目录中移出并放入系统ssh目录中:

 /etc/ssh/keys/authorized_keys 

只要我这样做,没有问题的工作。

感谢nrathaus和debugging级别的/var/log/auth.log调查结果如下。

另一个原因是您的主目录可能具有不同于755的权限。

在windows server 2008 r2中有同样的问题并探讨了很多解决办法,最后做到了这一点:

使用textpad或任何其他文本编辑器打开C:\ Program Files文件(x86)\ OpenSSH \ etc \ sshd_config

从下面的行中删除注释,删除后应该看起来像下面这样:

 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 

保存并尝试使用私钥login。 玩的开心。

在我的情况下,我不得不在Centos6.6上禁用SELinux才能正常工作:)

编辑/ etc / selinux / config并设置以下内容,然后重新启动主机。

 selinux=disabled 

顺便说一句…忘了提及我必须设置LogLevel = DEBUG3来确定问题。

我在solaris上遇到了同样的错误,但在/var/adm/splunk-auth.log中find以下内容:

 sshd: [auth.debug] debug1: PAM conv function returns PAM_SUCCESS sshd: [auth.notice] Excessive (3) login failures for weblogic: locking account. sshd: [auth.debug] ldap pam_sm_authenticate(sshd-kbdint weblogic), flags = 1 sshd: [auth.info] Keyboard-interactive (PAM) userauth failed[9] while authenticating: Authentication failed 

在/ etc / shadow帐户被locking:

 weblogic:*LK*UP:16447::::::3 

删除了“* LK *”部分:

 weblogic:UP:16447::::::3 

和往常一样,我可以使用ssh和authorized_keys。

在我的情况下,它是由( /etc/ssh/sshd_config )引起的:

 PermitRootLogin no 

更改为yes ,重新启动服务,并正常进入。

对于那些从Windows Server收到这个错误,我收到了同样的错误,这是一个用户帐户问题。 对于许多组织,pipe理员的组策略可能不允许设置SSH服务器和连接。 使用这种types的设置,必须从本地pipe理员帐户完成。 如果您确认公钥中没有任何错别字,可能值得研究。

我正在用psftp使用PUTTYgen文件,而当我们需要为客户端创build新的密钥时,我在Windows Server上遇到了这个问题。 private_key_name .ppk文件和open_ssh.txt文件必须位于相同的目录中才能使连接正常工作。

在我的情况下,在nfs的家庭是777,需要是750.这解决了这个问题。

我已经解决了这个问题,puttygen是第三方软件,由它生成的ssh密钥并没有直接使用,所以你必须做一些修改。 例如,它看起来像这样

 ---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20170502" AAAAB3NzaC1yc2EAAAABJQAAAQEAr4Ffd3LD1pa7KVSBDU+lq0M7vNvLp6TewkP7 *******C4eq1cdJACBPyjqUCoz00r+LqkGA6sIFGooeVuUXTOxbYULuNQ== ---- END SSH2 PUBLIC KEY ---- 

我省略了中间的一些字母,用*代替,如果不是的话,StackOverflow告诉我代码格式是错误的,不要让我发布。

这是我的puttygen生成的ssh密钥,你必须改成这个

 ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAr4Ffd3LD1pa7KVSBDU+lq0M7vNvLp6TewkP7wfvKGWWR7wxA8GEXJsM01FQw5hYWbNF0CDI7nCMXDUEDOzO1xKtNoaidlLA0qGl67bHaF5t+0mE+dZBGqK7jG9L8/KU/b66/tuZnqFqBjLkT+lS8MDo1okJOScuLSilk9oT5ZiqxsD24sdEcUE62S8Qwu7roVEAWU3hHNpnMK+1szlPBCVpbjcQTdiv1MjsOHJXY2PWx6DAIBii+/N+IdGzoFdhq+Yo/RGWdr1Zw/LSwqKDq1SmrpToW9uWVdAxeC4eq1cdJACBPyjqUCoz00r+LqkGA6sIFGooeVuUXTOxbYULuNQ== yourname@hostname 

就我而言,我已经删除了一些评论,比如

 ---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20170502" ---- END SSH2 PUBLIC KEY ---- 

并在开头添加ssh-rsa ,最后添加yourname@hostname注意 :不要在最后删除== ,你必须为你更改“yourname”和“hostname”,在我的情况下,是uaskh@mycomputer ,你的uaskh@mycomputer是你想login你的vps。当所有这些事情完成后,你可以通过cat public-key >> ~/.ssh/authorized_keys将公共密钥上传到uaskh的home〜 cat public-key >> ~/.ssh/authorized_keys然后sudo chmod 700 ~/.ssh 700〜 sudo chmod 700 ~/.ssh sudo chmod 600 ~/.ssh/authorized_keys然后你必须修改/ etc / ssh / sshd_config, RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys我的操作系统是CentOS 7,这是我第一次遇到问题,我会尽我所能去做,谢谢!

另一个原因可能是authorized_keys文件中的UTF-8 BOM 。