Mark blog

知行合一 划水归档

配置Linux主机之间SSH互信连接

无论在本地搭建实验环境还是在生产环境中,多节点并行计算设置中,建立Linux主机间的SSH互信是非常重要的环节.常见的互信机制包括RSH和SSH两种,其中SSH互信较常用到,下面介绍SSH的原理及其配置方法.

首先,我们先了解下配置ssh互信的原理,ssh互信,说白了,就是在目标机器上,预先设置好经过认证的key文件,当需要访问目标机器时,目标机器通过key文件,对访问者进行自动认证,从而实现互信.

了解了ssh互信的原理,我们把配置ssh互信的步骤,进行有效的分割:

1.首先,在要配置互信的机器上,生成各自的经过认证的key文件;

2.其次,将所有的key文件汇总到一个总的认证文件中;

3.将这个包含了所有互信机器认证key的认证文件,分发到各个机器中去;

4.验证互信;

实例演示:CentOS 7.5系统的两台电脑,IP分别为192.168.0.100和192.168.0.101,主机名(hostname)分别为node0和node1,默认都已安装SSH服务,要实现两个名称相同的账号root间的互信连接.

备注:主机名可以通过root用户修改/etc/sysconfig/network中的hostname变量名,重启设定生效,而hostname命令只修改当前显示的主机名,重启后即失效.

1.节点node1上,以root身份修改/etc/hosts文件,以建立主机IP和主机名(hostname)间的映射,其文件格式如下:

1
2
3
4
5
6
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.100.100 node1.localdomain node1
192.168.100.101 node2.localdomain node2

IP hostname.domainname hostname,其中各项以Tab键隔开.

注意:修改该文件不是必须步骤,但方便以后用主机名直接访问各主机,省去了输入IP地址的麻烦.在节点node2上进行相同操作.

2.用户root身份,在node1上生成认证RSA密钥(这里有个细节,就是ssh互信的认证文件,需要放在用户的home目录下的.ssh目录中,因此我们要首先建立这个目录,并且保证这个目录的权限是700):

1
2
3
4
5
6
7
8
9
10
11
12
# cd
# mkdir .ssh
# chmod 700 .ssh
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/deven/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/deven/.ssh/id_rsa.
Your public key has been saved in /home/deven/.ssh/id_rsa.pub.
The key fingerprint is:
89:56:d6:4a:b2:6c:4a:05:86:ae:cd:7d:80:dd:3c:f1 deven@node1

中间过程直接3个回车.在~/.ssh/目录下,生成了两个文件:id_rsa(私钥文件放在本地) 和 id_rsa.pub(公钥文件放在信任服务器).

在node2上,以用户root身份进行相同操作.

3.将所有的公钥文件 id_rsa.pub汇总到一个总的认证文件authorized-keys中:

1
2
3

# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# ssh root@node2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

4.经过1,2两步,目前node1上存在一份完整的认证key文件,这时候,把她拷到node2主机的对应目录下

1
# scp ~/.ssh/authorized_keys root@node2:~/.ssh/authorized_keys

5.大功告成,这时候,再互相用ssh命令连接,看看是否配置成功.