关于hadoop ssh免密码登录

今天在学习hadoop的时候碰到一个想不通的问题,就是免登录的原理以及配置,下面给大家分享下我的理解

1 主服务器:

修改主机名,并且加入本机的主机名和从服务器的主机名的host解析

[root@hadoop ~]# more /etc/hosts
127.0.0.1   localhost.localdomain localhost localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
masterip hadoop.master //masterip主服务器IP
slaveip hadoop.slave  //slaveip从服务器IP

[root@hadoop ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop.master

reboot重启系统

从服务器:

修改主机名,并且加入本机的主机名和从服务器的主机名的host解析

[root@hadoop ~]# more /etc/hosts
127.0.0.1   localhost.localdomain localhost localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
masterip hadoop.master //masterip主服务器IP
slaveip hadoop.slave  //slaveip从服务器IP

[root@hadoop ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop.slave

reboot重启从服务器


ssh测试

主服务器用命令

ssh [email protected]测试,如果有提示输入密码,表明能解析到从服务器的主机名,如果没有安装ssh,可以用命令

yum list | grep ssh先查看ssh client的版本,

然后用命令yum -y install openssh-clients-5.3p1-123.el6_9.x86_64安装对应版本的ssh clients


2主服务器配置公钥和密钥用于免密码登录

主服务器

[root@hadoop ~]#ssh-keygen -t rsa 

摁下回车之后会有一堆提示,接着敲回车知道完成就可以了,最后会屏幕会显示一堆指纹之类的东西

id_rsa是私钥,id_rsa.pub是公钥,将生成的公钥复制到authorized_keys中,authorized_keys用于认证

[root@hadoop ~]#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

复制公钥到从服务器,替换掉从服务器的认证文件

 ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 

!注意这里复制一定建议用ssh-copy-id来复制公钥,我之前试过用scp来复制,结果发觉服务器重启之后再次连接要输入密码

第一次连接从服务器

ssh hadoop.slave
The authenticity of host 'hadoop.slave (210.72.3.225)' can't be established.
RSA key fingerprint is 5e:84:cf:22:61:2c:e7:f3:69:1d:92:fe:a8:65:95:30.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop.slave,210.72.3.225' (RSA) to the list of known hosts.
Last login: Fri May 11 16:00:41 2018 from hadoop.slave

发觉已经不用输入密码就可以登录了

接下来说下这个公钥私钥解密的过程:

1主服务器向从服务器发送连接请求

2从服务器收到请求之后,在authorized_key中查找,authorized_key里面存放的是主服务器的公钥,那么会用主服务器的公钥进行加密,并且将其发送给主服务器

3主服务器收到加密信息后,用自己的私钥对其进行解密,将解密的数字发送给从服务器

4由于从服务器存放的是主服务器对应的公钥,因此和主服务器的解密的字符串一定是想吻合的,这样子就实现了免密码登录

这就是为什么公钥要用来加密,而只有私钥能用来解密,从服务器得到了公钥只要将其加密的功能,而主服务器有对应的私钥,所以只有主服务器才有解密验证的功能





你可能感兴趣的:(hadoop)