您的位置:首页 > 其它

SSH双向免密码登录细节

2014-06-17 23:59 99 查看
在安装好SSH的机子上,一般配置SSH单向(例如只从A机免密码登录到B机)免密码登录步骤如下:

在A机上:

cd ~/.ssh
ssh-keygen -t rsa    # 在~/.ssh目录下生成公私钥对
cat id_rsa.pub >> authorized_keys    # 将公钥追加到A机的authorized_keys文件中,则A机可以免密码登录本机
scp ./rsa_id.pub destination.host:~/.ssh    # 将公钥发送到B机子~/.ssh目录下



在B机子上:

cd ~/.ssh
cat id_rsa.pub >> authorized_keys    # 在~/.ssh目录下将公钥追加到authorized_keys文件中,至此,A机可以免密码登录B机(第一次登录时,需要输入B机子的登录密码)
chmod 600 authorized_keys    # 如果第二次登录时仍旧需要输入密码,请确认authorized_keys文件的权限



上述是设置A机免密码登录B机,如果需要进一步配置B机免密码登录A机,则在B机~/.ssh目录下ssh-keygen -t rsa生成自己的公私钥对之后(因为之前已经将A机的公钥文件rsa_id.pub发送到了B机的~/.ssh目录下,此时会提示覆盖该文件,这个可以直接覆盖,因为A机公钥已存在于authorized_keys文件中),在发送给A机之前,最好生成一份B机公钥副本(cp rsa_id.pub rsa_id.pub.B),以免覆盖了A机下面已经存在的A机自己的公钥。A机在得到B机的公钥后,将B机公钥追加到authorized_keys文件中,B机即可免密码登录A机(第一次登录也是需要密码)。最后清理A机下B机的公钥文件,并清理B机上B机自己的公钥副本,不然会影响登录,时间一长也容易搞混。

自己在实践过程中,正是因为直接将B机的公钥发送给A机从而覆盖了A机自己的公钥文件,导致A-B单向登录时还可以,一配置双向登录后,A-B单向登录也不行了(A机公钥已被替换)。(如果只是A/B两个自己,可以用scp命令直接将公钥复制到远程机子的authorized_keys文件中,但多机情况下该命令会将之前的内容直接覆盖,要是scp有文件追加功能就好了。)

出现这个情况的原因是自己实现对SSH登录原理不甚清楚,从而走了不少弯路。看来果真知其所以然,才能知其各种然。


同样附上自己参考的几篇比较有用的博文:SSH原理Secure Shell(Wikipedia)SSH原理与运用(一):远程登录(主要参看评论)ssh配置authorized_keys后仍然需要输入密码的问题ssh 无密码验证 及 ssh localhost 仍然需要密码的解决方案SSH双向免密码登陆:::linux配置双机SSH信任



如果文章对你有用,请在收藏之余“顶/赞”一下以示鼓励吧 (/ω\)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: