问题描述
我在虚拟机中设置了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连接时,我收到错误消息说没有可用的支持身份验证方法(服务器发送公钥)。
如果我在调试模式下运行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
希望能帮助别人。
第三种解决方法
-
编辑
/etc/ssh/sshd_config
文件。 -
将
PasswordAuthentication
和ChallengeResponseAuthentication
改变为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,之后连接工作完美。
第六种方法
解决了:
-
您需要下载puttyGEN并生成公钥和私钥。
-
我已经为我的私钥分配了密码。
-
然后在putty中配置私钥。 Putty-> SSH-> Auth->浏览到您的私人。
-
确保私钥和公钥具有相同的路径。
-
您需要在服务器上配置公钥。 (在我的情况下,我已经与服务器人谈过,并询问他是否可以将我的公钥添加到服务器)。您需要在另一端(服务器)连接的公钥。