当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

我在虚拟机中设置了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连接时,我收到错误消息说没有可用的支持身份验证方法(服务器发送公钥)。

如果我在调试模式下运行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中的Right-clicking将键字符串粘贴到命令行,它就像这样(使用上面给出的例子):

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

此方法的另一个优点是您可以使用>>以这种方式添加多个键。附加而不是>覆盖,例如:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

希望能帮助别人。

第三种解决方法

  1. 编辑/etc/ssh/sshd_config文件。

  2. PasswordAuthenticationChallengeResponseAuthentication改变为yes

3A。重启ssh /etc/init.d/ssh restart。或3b。更好地使用service sshd restart

第四种方法

我们已经使用了正确类型的密钥(ppk而不是pem)..

在我们的示例中,服务器用户文件夹中的authorized_keys的文件权限存在问题。它必须是-rw-r – r– …它是-rw-rw-r–

关于文件烫发,ssh非常挑剔。

第五种方法

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

第六种方法

解决了:

  1. 您需要下载puttyGEN并生成公钥和私钥。

  2. 我已经为我的私钥分配了密码。

  3. 然后在putty中配置私钥。 Putty-> SSH-> Auth->浏览到您的私人。

  4. 确保私钥和公钥具有相同的路径。

  5. 您需要在服务器上配置公钥。 (在我的情况下,我已经与服务器人谈过,并询问他是否可以将我的公钥添加到服务器)。您需要在另一端(服务器)连接的公钥。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1692.html,未经允许,请勿转载。