why需要免密登陆?
在构建服务器集群环境的时候,经常需要配置相同的环境,这种情况下,一般要使用scp在不同的服务器之间进行文件的复制,每次都需要输入密码太麻烦,再一个服务器集群之间的某些通信有时候也需要免密登陆后进行某些操作。
归根结底的操作都是ssh(secure shell)远程登陆!!!
what免密登陆(免密登陆原理)?
ssh远程登陆有两种验证方式:
1.使用用户名+密码验证;
2.使用公钥+私钥验证;
公钥+私钥验证:即在源服务器上先生成一份公钥和一份密钥,将公钥复制到目标服务器,利用命令将公钥添加至目标服务器的授权列表(authorized_keys)。当有服务器带着公钥申请连接服务器时,目标服务器首先在authorized_keys中查找是否存在该公钥,如果存在则开始进行验证。首先生成一个随机字符串,利用对应公钥进行加密,然后返回给申请连接的服务器,申请连接服务器利用私钥进行解密,再将字符串返回给目标服务器完成验证,进行后续操作。
how进行免密登陆?
前提:首先我们需要准备两台或两台以上服务器或虚拟机,配置好静态ip
1.配置hosts文件
vi /etc/hosts
在文件中加入你集群机器的ip和对应的域名
例如:
192.168.172.66 node01
192.168.172.67 node02
192.168.172.68 node03
192.168.172.69 node04
2.生成公钥+秘钥
ssh-keygen -t rsa
在执行上述命令的过程中一路enter即可
生成完成之后,可以在~/.ssh目录下
-rw-------. 1 root root 1675 Sep 24 19:39 id_rsa
-rw-r--r--. 1 root root 401 Sep 24 19:39 id_rsa.pub
3.传递公钥到目标机
[[email protected] .ssh]# ssh-copy-id -i ./id_rsa.pub [email protected]
[email protected].168.172.67's password:
Now try logging into the machine, with "ssh '[email protected].168.172.67'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting
ssh-copy-id -i ./id_rsa.pub [email protected]会做两件事
a.在192.168.172.67上生成 authorized_keys文件;
b.将源服务器的id_rsa.pub写入到192.168.172.67(目标服务器)的文件中;
4.测试免密登陆
5.其他的以此类推