Linux实现集群内相互免密的优势是,集群间通信畅通无阻,非常有利于做自动化部署等,甚至在一定程度提高集群性能。
SSH免密登陆原理
- 客户端生成公钥和私钥,然后手动将Client的公钥添加到Server端的authorized_key中(这里个人觉得可以用scp写个脚本,将管理节点的公钥分发到非管理节点的authorized_key中)。
- 客户端向服务端发送登录请求,服务端生成随机数R,并用客户端的公钥加密后得到Public(R),将其发送到客户端,客户端利用私钥解密得到R,利用MD5算法对R和建立会话的Session Key加密生成密文摘要Digest1,将Digest1发送到服务端。
- 在服务端对R和Session_Key利用相同的MD5算法生成摘要Digest2,比较Digest1和Digest2是否相同。
SSH实现集群内相互免密步骤
集群所有服务器生成密钥
[root@g1-1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? n
一路回车3下就行了,如果已经生成了他会在最后Overwrite是否重写重新生成
将集群内每台服务器生成id_rsa.pub拷贝到第一台的authorized_keys并分发下去
集群所有服务器生成的id_rsa.pub复制到第一台的authorized_keys文件中,这样会有一个比较大的authorized_keys文件,包含了集群每台的id_rsa.pub文件,然后从第一台集群将authorized_keys分发到集群的所有服务器,scp命令即可。
假设有7台服务器分别是ip1ip2ip3ip4ip5ip6,g1是主服务器,操作员只需要将g1下以下命令
[root@ g1 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
并去ip1-ip6服务器下ssh-keygen生成的id_rsa.pub拷贝到g1服务器的~/.ssh/authorized_keys文件中即可,再从g1服务器分发到ip1-ip6的所有服务器中,这样集群7台服务器就能免密了。
[root@ g1 ~]# scp ~/.ssh/authorized_keys root@ip1:~/.ssh/
[root@g1 ~]# scp ~/.ssh/authorized_keys root@ip1:~/.ssh/
[root@g1 ~]# scp ~/.ssh/authorized_keys root@ip2:~/.ssh/
[root@g1 ~]# scp ~/.ssh/authorized_keys root@ip3:~/.ssh/
[root@g1 ~]# scp ~/.ssh/authorized_keys root@ip4:~/.ssh/
[root@g1 ~]# scp ~/.ssh/authorized_keys root@ip5:~/.ssh/
[root@g1 ~]# scp ~/.ssh/authorized_keys root@ip6:~/.ssh/
分发成功后,g1与ip1-ip6就实现Linux集群服务器免密了。
热门跟贴