SSH公钥 – 没有可用的支持的身份validation方法(服务器发送的公钥)

我在虚拟机中设置了12.10服务器,其网络设置为桥接(基本上将被视为连接到我的交换机的计算机)。

我通过apt-get安装了opensshd,并且能够使用putty和我的用户名和密码连接到服务器。

然后我开始试图让它使用公钥/私钥认证。 我做了以下事情:

  1. 使用PuttyGen生成密钥。
  2. 将公钥移动到/etc/ssh/myusername/authorized_keys (我使用的是加密的主目录)。
  3. 像这样设置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非常挑剔。

  1. 编辑/etc/ssh/sshd_config文件。
  2. PasswordAuthenticationChallengeResponseAuthentication更改为yes

3A。 重启ssh /etc/init.d/ssh restart
要么
3B。 更好地使用service sshd restart

在我的情况下,原因是在Putty身份validation代理(即Pageant)中删除了私钥文件(.ppk)。 我刚刚将它更新到那里的Pageant,之后连接工作完美。

解决了:

  1. 您需要下载puttyGEN并生成公钥和私钥。
  2. 我已经为我的私钥分配了密码。
  3. 然后在putty中配置私钥。 Putty-> SSH-> Auth->浏览到您的私人。
  4. 确保私钥和公钥具有相同的路径。
  5. 您需要在服务器上配置公钥。 (在我的情况下,我已经与服务器人谈过,并询问他是否可以将我的公钥添加到服务器)。 您需要在另一端(服务器)连接的公钥。