配置Linux之间SSH互信连接

在多节点并行计算设置中,建立Linux主机间的SSH互信是非常重要的环节。常见的互信机制包括RSH和SSH两种,其中SSH互信较常用到,下面介绍SSH的原理及其配置方法。
 
首先,我们先了解下配置ssh互信的原理,ssh互信,说白了,就是在目标机器上,预先设置好经过认证的key文件,当需要访问目标机器时,目标机器通过key文件,对访问者进行自动认证,从而实现互信。
 
了解了ssh互信的原理,我们把配置ssh互信的步骤,进行有效的分割:
    1. 首先,在要配置互信的机器上,生成各自的经过认证的key文件;
    2. 其次,将所有的key文件汇总到一个总的认证文件中;
    3. 将这个包含了所有互信机器认证key的认证文件,分发到各个机器中去;
    4. 验证互信;
 
实例演示:CentOS 5.5系统的两台电脑,IP分别为192.168.0.100和192.168.0.101,主机名(hostname)分别为node1和node2,默认都已安装SSH服务,要实现两个名称相同的账号deven间的互信连接。
 
备注:主机名可以通过root用户修改/etc/sysconfig/network中的hostname变量名,重启设定生效,而hostname命令只修改当前显示的主机名,重启后即失效。
 
1. 节点node1上,以root身份修改/etc/hosts文件,以建立主机IP和主机名(hostname)间的映射,其文件格式如下:
# 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.0.100 node1.localdomain     node1
192.168.0.101 node2.localdomain     node2
IP hostname.domainname hostname,其中各项以Tab键隔开。
 
注意:修改该文件不是必须步骤,但方便以后用主机名直接访问各主机,省去了输入IP地址的麻烦。在节点node2上进行相同操作。
 
2. 用户deven身份,在node1上生成认证RSA密钥(这里有个细节,就是ssh互信的认证文件,需要放在用户的home目录下的.ssh目录中,因此我们要首先建立这个目录,并且保证这个目录的权限是700):
[deven@node1 ~]$ cd
[deven@node1 ~]$ mkdir .ssh
[deven@node1 ~]$ chmod 700 .ssh
[deven@node1 ~]$ 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上,以用户deven身份进行相同操作。
 
3. 将所有的公钥文件 id_rsa.pub汇总到一个总的认证文件authorized-keys中:
[deven@node1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[deven@node1 ~]$ ssh  deven@node2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4. 经过1,2两步,目前node1上存在一份完整的认证key文件,这时候,把她拷到node2主机的对应目录下
[deven@node1 ~]$ scp ~/.ssh/authorized_keys  deven@node2:~/.ssh/authorized_keys
5. 大功告成,这时候,再互相用ssh命令连接,看看是否配置成功。