主要介绍在Centos操作系统下,通过ssh的一些命令,建立多个主机间的互信。
假设有三台主机,主机名(也可以使用相应的IP来执行)分别为node1,node2,node3。若没有建立主机间的互信,当在多个主机之间通过su命令进行切换时,需要输入密码。而建立互信后,切换时就无需再输入密码。
不止是root用户可以建立互信,其他用户也可以进行。
方法1
方法步骤如下:
1.生成密钥(以在node1上操作为例)
命令:ssh-keygen -t rsa
对于提示,一路按回车即可
2.将生成的密钥文件拷贝到要建立互信的主机
如:ssh-copy-id -i ~/.ssh/id_rsa.pub node2
3.执行ssh,查看是否免密成功
如:ssh node2
第一次登陆时,需要输入密码认证,后续登陆,将会免密。
后续将node1上生成的密钥文件拷贝到node3,建立与node3主机的互信。
同理,在node2,node3上生成秘钥文件,并分别将其拷贝到node1,node3 与node1,node2上。
另外一种方法:
1.分别在node1,node2,node3上生成密钥文件。
2.仍然以node1上的操作为例,收集所有的待建互信主机的公钥,写入到本机的known_hosts文件中。
如收集node1的公钥:
ssh-keyscan -t rsa node1 >> ~/.ssh/known_hosts
收集node2,node3的公钥与此类似:
ssh-keyscan -t rsa node2 >> ~/.ssh/known_hosts
ssh-keyscan -t rsa node3 >> ~/.ssh/known_hosts
3.将node1上的互信文件拷贝到node2,node3。
执行scp命令。
scp -r .ssh node2:~
scp -r .ssh node3:~
4.通过ssh连接,验证是否成功建立互信。
补充:
当远程登录主机时,提示Host key verification failed.
原因是:主机子系统每次成功ssh连接远程操作,都会把你每个你访问过计算机的公钥(public key)都记录在主机的目录/Users/.ssh/known_hosts下,当下次访问相同子机服务器时,会核对公钥。如果公钥不同,会发出警告,避免你受到DNS Hijack之类的攻击。
可以查看本地主机中known_hosts中的公钥是否存在问题。