ssh命令的跳转其它机器的时候通常需要输入机器的密码,而互信的机器就不再需要输入密码了。
1.环境:
node1: 192.168.3.20 node2: 192.168.3.21
用到的命令
-
ssh-keygen:创建公钥和密钥,会生成id_rsa和id_rsa.pub两个文件
-
ssh-copy-id:把本地的公钥复制到远程主机的authorized_keys文件(不会覆盖文件,是追加到文件末尾),并且会设置远程主机用户目录的.ssh和.ssh/authorized_keys权限,默认权限为:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
2.实现步骤
1.在两台机器上生成认证文件,就是ssh互信的认证文件,需要放在用户的home目录中,所以我们需要先创建这个目录,且保证这个目录的权限是755,然后在home目录下创建 .ssh
,操作如下:
[root@192.168.3.20 ]# mkdir ~/.ssh
[root@192.168.3.20 ]# chmod 755 ~/.ssh
[root@192.168.3.20 ]# cd ~/.ssh
[root@192.168.3.20 ]# /usr/bin/ssh-keygen -t rsa
[root@192.168.3.21 ]# mkdir ~/.ssh
[root@192.168.3.21 ]# chmod 755 ~/.ssh
[root@192.168.3.21 ]# cd ~/.ssh
[root@192.168.3.21 ]# /usr/bin/ssh-keygen -t rsa
2.通过命令 ssh-copy-id
将每个主机上的公共密钥文件id_rsa.pub的内容复制到其他每一个主机的~/.ssh/authorized_keys文件中。注意,当您第一次使用ssh访问远程主机时,其RSA密钥是未知的,所以提示确认一下,确认完毕后SSH将纪录远程主机的RSA密钥,以后连接该主机将不再做出相应的提示。
[root@192.168.3.20]#ssh-copy-id -i .ssh/id_rsa.pub root@192.168.3.21
[root@192.168.3.21]#ssh-copy-id -i .ssh/id_rsa.pub root@192.168.3.20
注:如果不是默认的端口,可以这样写
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2022 root@192.168.3.21"
注:如果不想安装 ssh-copy-id
命令的方式来实现,可以按照以下步骤操作
[root@192.168.3.20]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@192.168.3.20]# ssh root@192.168.3.21 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然后,在192.168.3.20上存了一份完整的key认证文件,我们只需要把这个目录拷贝到192.168.3.21这台机器的对应目录里去就可以了,别忘了把authorized_keys 的权限设置成600
[root@192.168.3.20]# scp ~/.ssh/authorized_keys root@192.168.3.21:~/.ssh/authorized_keys
[root@192.168.3.20]# chmod 600 ~/.ssh/authorized_keys
3.到此为止,互信配置完毕,检测一下是否成功
[root@192.168.3.20]#ssh root@192.168.3.21
3.说明:
-
上面是以root用户配置互信,如果想要其它用户,可以切到相应的用户下执行命令即可
-
如果单纯的只需要单向信任,在一台机器上执行命令就可以了,比如说node1连接node2,不用密码的话,在node1上执行命令就可以了
-
3.也可以把ip地址和主机名对应关系加到 /etc/hosts里 这样直接
ssh 主机名
就可以了(例如:192.168.3.21 node2
加到hosts里)