七叶笔记 » golang编程 » Linux 如何实现集群相互免密

Linux 如何实现集群相互免密

Linux实现集群内相互免密的优势是,集群间通信畅通无阻,非常有利于做自动化部署等,甚至在一定程度提高集群性能。

SSH免密登陆原理

  1. 客户端生成公钥和私钥,然后手动将Client的公钥添加到Server端的authorized_key中(这里个人觉得可以用scp写个脚本,将管理节点的公钥分发到非管理节点的authorized_key中)。
  2. 客户端向服务端发送登录请求,服务端生成随机数R,并用客户端的公钥加密后得到Public(R),将其发送到客户端,客户端利用私钥解密得到R,利用MD5算法对R和建立会话的Session Key加密生成密文摘要Digest1,将Digest1发送到服务端。
  3. 在服务端对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集群服务器免密了。

相关文章