有什么办法来validation为什么2台服务器之间的SSH密钥交换不起作用?
在服务器A:我做了以下步骤:
ssh-keygen –t rsa cd /.ssh cp id_rsa.pub authorized_keys
然后在服务器B中:我创build了.ssh目录,并从服务器A上载了authorized_keys
我尝试从服务器Alogin到服务器B,但系统仍然提示我input密码。
我试着用这个:在服务器上(A)你通过ssh user1 @ host连接? 你可以试试ssh -o PreferredAuthentications = publickey user1 @ host,但是显示权限被拒绝(gssapi-keyex,gssapi-with-mic,publickey,password,keyboard-interactive)。
任何build议如何检查什么是错的? 只是在服务器A中的其他信息,我没有使用根帐户。
试试ssh -v这应该提供关于authentication过程的附加信息。
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创build了一个密钥对然后你把.ssh/id_rsa.pub上的密钥上传到服务器(B),并把它附加到user1的.ssh/authorized_keys 。
在服务器(A)上通过ssh user1@host连接? 你可以试试ssh -o PreferredAuthentications=publickey user1@host
你可以通过ssh -i ~/.ssh/serverB/id_rsa user1@host来提供一个特殊/不同的标识文件
检查serverb authorized_keys文件的权限。 如果它具有写入群组/其他权限,则使用公共密钥login将失败,如果可用,则回退到密码。 如果需要,将authorized_keys文件上的权限更改为644。
可能的但不太可能的是,在/etc/ssh/sshd_config文件中禁用公共密钥身份validation。 检查configuration文件是否包含一行
PubkeyAuthentication no
如果它只是注释掉(默认是yes)并重新启动sshd服务。
检查B上的sshd是否configuration为接受基于密钥的身份validation。 在基于RedHat的系统上,configuration文件是/ etc / ssh / sshd_config。
给你一个提示:看一下serverB的sshd日志(基于Red Hat的/var/log/secure )
http://www.openssh.org/faq.html#3.14
而对于未来,您应该使用ssh-copy-id而不是手动拷贝。
这个命令不应该工作:
cd /.ssh
这是一个错字,或者当你将id_rsa.pub文件复制到authorized_keys时,你是错了吗?
login到服务器B和cat ~/.ssh/authorized_keys以查看它是否包含服务器A上相同文件中的内容。
请注意,在服务器A上保留authorized_keys文件并不重要,因为它不用于从服务器A到服务器B的身份validation事务。您只需要在服务器A上的〜.ssh /中使用id_rsa文件。