腻子:获取服务器拒绝我们的关键错误
我使用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 。