我在虚拟机中有一个 12.10 服务器设置,其网络设置为桥接(基本上将被视为连接到我的交换机的计算机)。
我通过安装 opensshdapt-get并且能够使用我的用户名和密码使用腻子连接到服务器。
然后我开始尝试让它使用公钥/私钥身份验证。我做了以下事情:
/etc/ssh/myusername/authorized_keys(我正在使用加密的主目录)。sshd_config像这样设置:
PubkeyAuthentication yes
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
StrictModes no
PasswordAuthentication no
UsePAM yes
Run Code Online (Sandbox Code Playgroud)当我使用 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
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该如何解决?
F21*_*F21 92
问题解决了:
看起来我的公钥文件有问题。PuttyGen 将创建一个公钥文件,如下所示:
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----
Run Code Online (Sandbox Code Playgroud)
但是,这行不通,所以您需要做的是在 PuttyGen 中打开密钥,然后从那里复制它(这会导致密钥的格式正确并在 1 行中):
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022
Run Code Online (Sandbox Code Playgroud)
将其粘贴到authorized_keys然后它应该工作。
小智 35
/etc/ssh/sshd_config文件。PasswordAuthentication和ChallengeResponseAuthentication到yes。 3a. 重新启动 ssh /etc/init.d/ssh restart。
或
3b。更好地使用service sshd restart
小智 14
只是一个提示,我希望可以帮助其他人解决我的头痛。F21是正确的,您需要将密钥复制到PuTTYGen窗口之外而不是保存文件,但是复制后,您粘贴的方式可能会对您的密钥是否有效产生重大影响。某些编辑器会在您粘贴时更改文本,或者使用换行符或使authorized_keys 文件无效的操作。
我发现最不可能破坏的是回显完整字符串并将输出重定向到文件。在 PuTTY 中右键单击以将密钥字符串粘贴到命令行,效果如下(使用上面给出的示例):
echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys
Run Code Online (Sandbox Code Playgroud)
你最终会得到这个:
echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys
Run Code Online (Sandbox Code Playgroud)
这种方法的另一个优点是您可以通过使用 >> 附加而不是 > 覆盖来添加多个键,例如:
echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username
Run Code Online (Sandbox Code Playgroud)
希望能帮助某人。
小智 12
我们已经在使用正确类型的密钥(ppk 而不是 pem)。
在我们的例子中,服务器用户文件夹上的authorized_keys 的文件权限有问题。它必须是 -rw-r--r-- ... 它是 -rw-rw-r--
ssh 对文件权限非常挑剔。
小智 9
解决了:
| 归档时间: |
|
| 查看次数: |
934835 次 |
| 最近记录: |