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