如何打通两台主机的ssh免密码登录?

如何打通两台主机的ssh?即用本地主机ssh登录服务器主机时不需要输入密码。

喜欢这个问题 | 分享 | 新建回答

回答

妹岛

Sep 28, 2019
1 赞

所谓打通ssh,就是方便本地主机ssh登录服务器主机时不要输入每次输入密码,同时更加安全;尤其对于拥有很多服务器,需要程式化管理时,这点就非常重要。

前提:必须两台主机都安装了ssh。

步骤1:在本机生成公钥

公钥类型分为rsa和dsa两种,就用rsa格式的公钥吧。

$ cd ~/.ssh
$ ssh-keygen -t rsa

注意:如果~/.ssh 文件夹下已经有了id_rsa.pub这个公钥文件了,那就不用再运行“ssh-keygen -t rsa”来生成公钥了,否则有可能影响你之前的相关设定。

步骤2:将刚才生成的公钥id_rsa.pub发布到服务器主机上

使用scp命令,将刚才生成的公钥id_rsa.pub文件copy到服务器主机的~/.ssh路径下。

$ scp ~/.ssh/id_rsa.pub username@target-server:~/.ssh/fuckey

备注:上述的username换成你的目标服务器的登录用户名,target-server就是目标服务器主机名称或ip;fuckey只是我随意命名的一个文件,名字可以随意自定义,公钥id_rsa.pub复制到服务器上临时被命名为fuckey文件。这个文件就是你当前主机的身份象征,后续会根据这个文件的内容进一步设定。

步骤3:将公钥的内容放到authorized_keys文件中

在目标服务器上,把刚才临时存放在“fuckey”这个文件中的公钥内容,放到目标服务器的~/.ssh文件夹下的authorized_keys文件中即可:

$ cd ~/.ssh
$ mv fuckey authorized_keys

如果是第一次设置,目标服务器的~/.ssh路径下没有authorized_keys文件,那就直接用mv命令把fuckey文件重命名为authorized_keys文件即可;如果已经存在了authorized_keys文件,那就vim打开fuckey文件,手动复制里面内容,在vim打开authorized_keys文件,手动粘贴在文件末尾即可。(其实手动复制粘贴可以一键使用cat命令即可实现)

步骤4:设置目标服务器的文件夹与文件权限

将目标服务器的~/.ssh文件夹设置成755权限;将 ~/.ssh/authorized_keys文件设置成644权限;如下所示操作:

chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

大功告成,重新退出服务器后,再进行ssh登录,就会发现不需要输入密码咯~