一、SSH原理

大数据集群中的计算机之间需要频繁通信,但是Linux系统在相互通信中需要进行用户身份认证,也就是输入登录密码。在集群规模不大的情况下,可以适用,但是如果集群有几十台、几百台甚至几千台计算机,频繁的认证(输入密码)会增加任务负担,降低工作效率。因此,实际的集群需要进行免密登录(即不用输入密码即可实现从A服务器登录到B服务器中)。

hadoop配置免密登录后连不上虚拟机 hadoopssh免密_ssh

由上图A服务器登录B服务器的免密登录过程,说明SSH(免疫登录)原理:

1.    A服务器登录B服务器,A需要生成一对(公钥,私钥)

2.    将A的公钥配置在B的信任文件(Authorized_keys)中

3.    A登录B服务器,并发送数据,数据用A的私钥进行加密。

4.    B要在信任文件(Authorized_keys)中进行匹配A的公钥并进行解密

5.    匹配成功后,B会根据“公钥+数据”信息发送给A,进行质询

6.    A收到B发来的质询,A使用A的私钥进行解密,并将解密结果发送给B

最后,B进行对比,一致则登录成功

总结就是:服务器A做的事情——》

i).生成公钥和私钥,并将公钥发给B

ii).发送数据给B,用私钥加密;

iii).收到B用公钥加密的数据,用私钥解开

服务器B做的事情——》

i).收到A发来的公钥

ii).收到A发送的用私钥加密的数据,并用公钥给解开

iii).将解密后的数据,加上公钥,发给A

二、设置SSH免密登陆

注:举例中主机名为hadoop01的服务器实现免密登录到主机名hadoop02中。

切换到需要设置免密登陆用户的家目录,并进入到.ssh目录(若没有.ssh目录,使用ssh连接别的服务器,就会生成这个文件夹) 注:哪台服务器配置了免密登陆,该服务器登陆别的服务器就不需要密码

1.在.ssh目录下输入如下命令,并(回车四次)生成密钥

[root@hadoop01 .ssh]# ssh-keygen -t rsa

“ssh-keygen”通过参数“-t”指定加密算法,这里的参数rsa表示采用RSA加密算法。RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解这种数学难题,是引用最广泛的非对称加密算法之一。

2.公钥拷贝到其他服务器(其他服务器的用户目录.ssh文件会保存公钥到authorized_keys文件下)

[root@hadoop01 .ssh]# ssh-copy-id hadoop02

3.将生成免密登陆密钥的机器,也把公钥拷贝到自己的authorized_keys文件下   

[root@hadoop01 .ssh]# ssh-copy-id hadoop01