linux主机互信


linux配置ssh互信

什么叫linux主机互信:

Linux主机互信,就是主机之间相互信任,什么是信任,就像人与人之间一样,不需要利用金钱等(除了你自己以外其他的东西)来取得对方的信任,大家相互信任对方,不需要额外的凭证。就好比你,你爸,你妈,你姐之间,不需要钱来维持你们之间的信任。同样,linux主机之间也是,我们从一台主机登陆到另一台时,往往需要验证你,需要你输入用户密码,才允许你登陆。这样在多台机器之间来回切换登陆就会频繁输入密码,非常麻烦,看看,一切的根源来自于互不信任。可不可以不用输入密码就直接登陆呢?答案是可以,但条件是主机之间相互信任对方。

因此ssh互信就诞生了。我们在主机值之间配置了公钥认证后,也就是取得信任之后,就不必再输入密码了(当然实际上是ssh使用rsa算法帮你完成了验证过程)。

公钥认证的基本思想:

对信息的加密和解密采用不同的key,这对key分别称作private key和publickey,其中,public key存放在欲登录的服务器上,而privatekey为特定的客户机所持有。当客户机向服务器发出建立安全连接的请求时,首先发送自己的public key,如果这个public key是被服务器所允许的,服务器就发送一个经过public key加密的随机数据给客户机,这个数据只能通过private key解密,客户机将解密后的信息发还给服务器,服务器验证正确后即确认客户机是可信任的,从而建立起一条安全的信息通道。通过这种方式,客户机不需要向外发送自己的身份标志“private key”即可达到校验的目的,并且private key是不能通过public key反向推断出来的。这避免了网络窃听可能造成的密码泄露。客户机需要小心的保存自己的private key,以免被其他人窃取,一旦这样的事情发生,就需要各服务器更换受信的publickey列表。

使用过github的用户就会知道,用git登陆远程仓库github的时候,也会有公钥认证(当然是首次使用git时),首次使用git,就会要求你在客户端生成一个rsa key pairs,一个public-key存放于id_rsa.pub,一个private-key存放于id_rsa,并且上传你的公钥public-key到github上,这样做的目的就是你可以取得github的信任,也就是github信任你,下次你登录的时候,github会使用你上传的公钥来验证你的身份,从而不用输入密码。当然这个过程只是单向的信任,也就是github现在信任你,但是你并没有建立对github的信任,需要建立么,其实没有必要,因为github是不会主动向你发出请求的,大多数情况是你需要主动向github发送请求。

知道了单向信任,那么相互信任就简单了,就是主机之间的公钥都要告知对方,这样才能相互信任,你信任我,我信任你。那么,以下就是互信建立的步骤了:

配置ssh互信的步骤如下:

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

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

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

4. 验证互信。

在主机名为node1,node2,node3上以相同的用户test创建ssh互信。

1.在每个节点上创建 RSA密钥和公钥

使用test用户登陆

mkdir~/.ssh

chmod700 ~/.ssh

cd~/.ssh

ssh-keygen-t rsa

2.整合公钥文件

在node1上执行以下命令

sshnode1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

sshnode2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

sshnode3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod600 ~/.ssh/authorized_keys

3.分发整合后的公钥文件

在node1上执行以下命令

scp~/.ssh/authorized_keys node2:~/.ssh/

scp~/.ssh/authorized_keys node3:~/.ssh/

4.测试ssh互信

在各个节点上运行以下命令,若不需要输入密码就显示系统当前日期,就说明SSH互信已经配置成功了。

sshnode1 date

sshnode2 date

sshnode3 date

一下是我的实验

[ocdc@HBBDC-Interface-1 .ssh]$ ssh-keygen-t rsa

Generating public/private rsa key pair.

Enter file in which to save the key(/home/ocdc/.ssh/id_rsa):

/home/ocdc/.ssh/id_rsa already exists.

Overwrite (y/n)? y

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in/home/ocdc/.ssh/id_rsa.

Your public key has been saved in/home/ocdc/.ssh/id_rsa.pub.

The key fingerprint is:

b3:e7:19:4b:e1:59:0d:b5:4d:ba:04:89:81:9d:37:01ocdc@HBBDC-Interface-1

The key's randomart image is:

+---[RSA 2048]----+

| oE=oo. .|

| . + +o = |

| ...+ .|

| + . |

| S . . o |

| + + |

| . * |

| + + |

| + |

+-----------------+

然后在各个需要互信的接口机上重复以上步骤生成认证文件

回到接口机1,

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.21 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ocdc@10.31.100.21's password:

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.22 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ocdc@10.31.100.22's password:

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.23 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ocdc@10.31.100.23's password:

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.24 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ocdc@10.31.100.24's password:

[ocdc@HBBDC-Interface-1 .ssh]$ catauthorized_keys

可以看到所有主机的公钥都存在了authorized_keys中。接下来就是分发这个整合后的证书了。

[ocdc@HBBDC-Interface-1 .ssh]$ scp~/.ssh/authorized_keys 10.31.100.21:~/.ssh/

ocdc@10.31.100.21's password:

authorized_keys 100% 3219 3.1KB/s 00:00

[ocdc@HBBDC-Interface-1 .ssh]$ scp~/.ssh/authorized_keys 10.31.100.22:~/.ssh/

ocdc@10.31.100.22's password:

authorized_keys 100% 3219 3.1KB/s 00:00

[ocdc@HBBDC-Interface-1 .ssh]$ scp~/.ssh/authorized_keys 10.31.100.23:~/.ssh/

ocdc@10.31.100.23's password:

authorized_keys 100% 3219 3.1KB/s 00:00

[ocdc@HBBDC-Interface-1 .ssh]$ scp~/.ssh/authorized_keys 10.31.100.24:~/.ssh/

ocdc@10.31.100.24's password:

authorized_keys 100% 3219 3.1KB/s 00:00

任务完成,验证是否成功

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.21 date

Wed May 27 20:39:39 CST 2015

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.22 date

Wed May 27 20:39:45 CST 2015

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.23 date

Wed May 27 20:39:51 CST 2015

[ocdc@HBBDC-Interface-1 .ssh]$ ssh10.31.100.24 date

Wed May 27 20:39:55 CST 2015

相关内容