有什么方法可以验证为什么两台服务器之间的 SSH 密钥交换不起作用?
在服务器A中:我执行了以下步骤:
ssh-keygen –t rsa
cd /.ssh
cp id_rsa.pub authorized_keys
然后在服务器 B 中:我创建了目录并从服务器 A.ssh
上传authorized_keys
我尝试从服务器 A 登录到服务器 B,但系统仍提示我输入密码。
我尝试使用这个:在服务器 (A) 上,您通过 ssh user1@host 连接吗?您可以尝试 ssh -o PreferredAuthentications=publickey user1@host,但它显示权限被拒绝权限被拒绝 (gssapi-keyex、gssapi-with-mic、publickey、password、keyboard-interactive)。
有什么建议可以帮你检查哪里出了问题吗?只是在服务器 A 中没有使用 root 帐户,所以需要提供一些附加信息。
答案1
尝试一下ssh -v
这应该可以提供有关身份验证过程的更多信息。
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive,hostbased
debug1: Offering RSA public key: /home/nce/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
只是为了确认您的步骤:您通过 ssh-keygen 创建了一个密钥对,然后将密钥上传.ssh/id_rsa.pub
到服务器(B)并将其附加到.ssh/authorized_keys
用户 1。
在服务器(A)上,你通过什么方式连接ssh user1@host
?你可以尝试ssh -o PreferredAuthentications=publickey user1@host
您可以通过以下方式提供特殊/不同的身份文件ssh -i ~/.ssh/serverB/id_rsa user1@host
答案2
检查服务器 authorized_keys 文件的权限。如果它对 group/other 具有写入权限,则使用公钥登录将失败,并在密码可用的情况下恢复使用密码。如果需要,请将 authorized_keys 文件的权限更改为 644。
有可能,但可能性较小,因为你的文件中禁用了公钥身份验证/etc/ssh/sshd_config
。检查配置文件中是否不包含以下行
PubkeyAuthentication no
如果确实如此,则将其注释掉(默认为是)并重新启动 sshd 服务。
答案3
给你一个提示:查看 serverB 的 sshd 日志(/var/log/secure
基于 Red Hat)
http://www.openssh.org/faq.html#3.14
而对于未来,您应该使用它ssh-copy-id
来代替手动复制。
答案4
此命令不应该起作用:
cd /.ssh
这是拼写错误吗?还是您将 id_rsa.pub 文件复制到 authorized_keys 时放错了地方?
登录到服务器 B 并cat ~/.ssh/authorized_keys
查看它是否包含服务器 A 上的相同文件的内容。
请注意,保留服务器 A 上的 authorized_keys 文件并不重要,因为它不用于从服务器 A 到服务器 B 的身份验证交易。您只需要服务器 A 上 ~.ssh/ 中的 id_rsa 文件。