SSH公钥 – 没有可用的支持的身份validation方法(服务器发送的公钥)
我在虚拟机中设置了12.10服务器,其网络设置为桥接(基本上将被视为连接到我的交换机的计算机)。
我通过apt-get
安装了opensshd,并且能够使用putty和我的用户名和密码连接到服务器。
然后我开始试图让它使用公钥/私钥认证。 我做了以下事情:
- 使用PuttyGen生成密钥。
- 将公钥移动到
/etc/ssh/myusername/authorized_keys
(我使用的是加密的主目录)。 -
像这样设置
sshd_config
:PubkeyAuthentication yes AuthorizedKeysFile /etc/ssh/%u/authorized_keys StrictModes no PasswordAuthentication no UsePAM yes
当我使用putty或WinSCP连接时,我收到错误消息说没有可用的支持身份validation方法(服务器发送公钥)。
如果我在调试模式下运行sshd
,我看到:
PAM: initializing for "username" PAM: setting PAM_RHOST to "192.168.1.7" PAM: setting PAM_TTY to "ssh" userauth-request for user username service ssh-connection method publickey [preauth] attempt 1 failures 0 [preauth] test whether pkalg/pkblob are acceptable [preauth[ Checking blacklist file /usr/share/ssh/blacklist.RSA-1023 Checking blacklist file /etc/ssh/blacklist.RSA-1023 temporarily_use_uid: 1000/1000 (e=0/0) trying public key file /etc/ssh/username/authorized_keys fd4 clearing O_NONBLOCK restore_uid: 0/0 Failed publickey for username from 192.168.1.7 port 14343 ssh2 Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth] do_cleanup [preauth] monitor_read_log: child log fd closed do_cleanup PAM: cleanup
为什么会发生这种情况?我该如何解决这个问题?
问题解决了:
看起来我的公钥文件有问题。 PuttyGen将创建一个公钥文件,如下所示:
---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20121022" AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u vObrJe8= ---- END SSH2 PUBLIC KEY ----
但是,这不起作用,所以你需要做的是在PuttyGen中打开密钥,然后从那里复制它(这导致密钥格式正确,在1行中):
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022
将其粘贴到authorized_keys
然后它应该工作。
我希望可以帮助其他人解决我头痛的问题。 F21是正确的,您需要将密钥从PuTTYGen窗口复制出来而不是保存文件,但在复制后,粘贴的方式可能会对您的密钥是否有效产生重大影响。 某些编辑器会在您粘贴时更改文本,或者使用换行符或使authorized_keys文件无效的内容执行某些操作。
我发现最不可能破坏的是回显完整的字符串并将输出重定向到文件。 右键单击PuTTY以将键字符串粘贴到命令行,它就像这样(使用上面给出的示例):
echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys
你最终会得到这个:
echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys
这种方法的另一个优点是你可以通过使用>> to append而不是>来覆盖来添加多个键,例如:
echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username
希望能帮助别人。
我们已经使用了正确类型的密钥(ppk而不是pem)..
在我们的示例中,服务器用户文件夹上的authorized_keys的文件权限存在问题。 它必须是-rw-r – r– ……这是-rw-rw-r–
关于文件烫发,ssh非常挑剔。
- 编辑
/etc/ssh/sshd_config
文件。 - 将
PasswordAuthentication
和ChallengeResponseAuthentication
更改为yes
。
3A。 重启ssh /etc/init.d/ssh restart
。
要么
3B。 更好地使用service sshd restart
在我的情况下,原因是在Putty身份validation代理(即Pageant)中删除了私钥文件(.ppk)。 我刚刚将它更新到那里的Pageant,之后连接工作完美。
解决了:
- 您需要下载puttyGEN并生成公钥和私钥。
- 我已经为我的私钥分配了密码。
- 然后在putty中配置私钥。 Putty-> SSH-> Auth->浏览到您的私人。
- 确保私钥和公钥具有相同的路径。
- 您需要在服务器上配置公钥。 (在我的情况下,我已经与服务器人谈过,并询问他是否可以将我的公钥添加到服务器)。 您需要在另一端(服务器)连接的公钥。