本文测试环境:
Linux系统镜像:CentOS-7-x86_64-DVD-1804.iso
虚拟机版本:VMware-workstation-full-12.1.0-3272444
操作成功后的效果:
每台主机可以本机SSH免密登录,也可以与其他主机之间实现SSH免密登录,也就是每台主机都可以一对多SSH免密登录.
现用虚拟机搭建三台主机,IP分别是:
192.168.33.201 master1
192.168.33.202 master2
192.168.33.203 master3
SSH免密登录的原理在这里就不做介绍了,有兴趣的可以自己去网上找资料了解一下,在这里就直接上方法了.
PS:
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
方法一:
先选择其中一台主机,在该主机上生成公钥和私钥,再将公钥和私钥上传到其他主机上,具体操作如下:
在这里我就选择master1进行操作以下操作了:
1.登录Linux系统,根据自己实际情况选择登录用户,执行下面代码生成公钥私钥对:
ssh-keygen -t rsa
会出现如下提示,一路回车就行
[root@master1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): //这里回车
Enter passphrase (empty for no passphrase): //这里回车
Enter same passphrase again: //这里回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
df:71:f6:3e:bb:bb:6c:38:91:f4:bc:70:a1:dd:86:a9 root@master1
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| . . |
| S o Ooo|
| . . Oo*o|
| . ..=.o|
| Eo.= |
| o*B|
+-----------------+
注意:在程序提示输入passphrase时直接输入回车,表示无证书密码。
2.生成秘钥的默认目录为:~/.ssh,该目录下会生成下面两个文件:
id_rsa
id_rsa.pub
2.实现本地免密登录,将id_rsa.pub中的内容拷贝到authorized_keys
ssh-copy-id localhost
~/.ssh目录下会生成一个新的文件:authorized_keys
3.完成上述步骤后就可以本地SSH免密登录了,运行下面代码出现一行登录时间就代表本地SSH免密登录成功
ssh localhost
下面是本地SSH免密登录成功的标志:
[root@master1 ~]$ ssh localhost
Last login: Mon Aug 27 08:41:20 2018 from 192.168.33.2
4.如果本机能成功SSH免密登录,
先退出SSH登录:
exit
再执行以下代码将本机的~/.ssh文件夹复制到其他主机上:
scp -r ~/.ssh 192.168.33.202:~/
scp -r ~/.ssh 192.168.33.203:~/
提示输入密码时,输入远程主机密码回车即可
5.测试SSH免密登录,这里就不发测试了,大家自行测试
方法二:
将每台机器生成的id_rsa.pub追加添加到同一个authorized_keys内,然后再将该authorized_keys发送到其他远程主机上.
具体步骤如下:
1.在master1,master2,master3上分别执行:
ssh-keygen -t rsa
与"方法一"内所述一样,一路回车即可,生成秘钥的默认目录为~/.ssh
2.接着制作包含master1,master2,master3中所有id_rsa.pub的authorized_keys文件:
此处在master 1上生成authorized_keys文件,
在master1上执行:
ssh-copy-id -i 192.168.33.201
在master2上执行:
ssh-copy-id -i 192.168.33.201
在master3上执行:
ssh-copy-id -i 192.168.33.201
注意:此处代码中的"-i"千万不要忘记了!!!
3.通过scp将master1上生成的authorized_keys文件发送给其他主机:
在master1上执行
scp -r ~/.ssh/authorized_keys 192.168.33.202:~/.ssh
scp -r ~/.ssh/authorized_keys 192.168.33.203:~/.ssh
提示输入密码时,输入远程主机密码回车即可
5.测试SSH免密登录,可先测试本机免密登录,再测试远程主机远程登录
本机登录可用:
ssh localhost
远程登录将localhost换成远程主机IP即可
比如在master1上登录master2,就在master1上执行:
ssh 192.168.33.202
相关故障处理:
部分人在配置完成后可能出现无法登录的情况,错误代码我不太记得了,欢迎各位读者在下面补充.
造成故障的原因是之前配置过程中配置失败,然后重新对SSH免密登录进行配置,配置完成后无法正常登录,解决方法如下:
删除各主机下~/.ssh目录中的known_hosts文件:
rm -rf ~/.ssh/known_hosts