Hadoop全分布集群搭建——SSH免密码登陆
紧接着上篇讲,设置完主机名和域名解析之后,hadoop需要通过ssh登陆到各个节点操作,一般情况下,我们为了安全,不会直接用root身份进行hadoop环境搭建,因此设立一个新的用户。按照以下步骤。
1. 为所有节点设立用户hadoop
以Master节点为例,用root身份登录
useradd hadoop #创建用户hadoop
passwd hadoop #修改hadoop用户的密码
然后,测试用新建的hadoop用户登陆系统,成功登陆即完成了用户添加操作。其他每个Slave节点,以同样的方式创建hadoop用户(用户名要相同)
2. Master节点免密登录
在Master节点进行如下操作。
1.首先保证系统中已经安装了ssh服务,然后用hadoo身份登录系统
su hadoop
2.然后,以hadoop的身份生成公钥和私钥,期间一路回车即可。
ssh-keygen -t rsa
完成后在/home/hadoop/.ssh/目录下就能看到生成了公钥和私钥:id_rsa,id_rsa.pub
3.接着,将公钥写入authorized_keys文件:
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
4.然后,修改权限(至关重要)
chmod 600 authorized_kyes
5.测试是否需要密码,第一次需要输入yes,之后就不用了,能免密登录,则证明成功。
ssh Master
3. 生成并上传公钥
为了能够让Master免密码登陆各个Slave节点,且Slave节点也能用hadoop用户免密登录到Master节点,在各个Slave节点上进行如下操作
以Slave1为例:
1.首先保证系统中已经安装了ssh服务,然后用hadoop身份登录
su hadoop
2.然后,以hadoop身份生成公钥和私钥,期间有提示,一路回车即可。
ssh-keygen -t rsa
3.然后,将公钥上传到Master节点。期间会提示输入Master节点上hadoop用户的密码,正确输入开始上传
scp /home/hadoop/.ssh/id_rsa.pub hadoop@Master:/home/hadoop/.ssh/id_rsa.pubSlave1
Slave2和Slave3中进行相同的操作,只不过需要注意上传之后的文件名(id_rsa.pubSlave2,id_rsa.pubSlave3)
4.Mster与Slave节点之间免密登录
1.以hadoop用户登陆Master节点,转到hadoop用户的.ssh目录下
cd /home/hadoop/.ssh
2.将各个Slave节点传过来的id_rsa.pubSlave*追加到authorized_keys:
cat /home/hadoop/.ssh/id_rsa.pubSlave1 >> /home/hadoop/.ssh/authorized_keys
cat /home/hadoop/.ssh/id_rsa.pubSlave2 >> /home/hadoop/.ssh/authorized_keys
cat /home/hadoop/.ssh/id_rsa.pubSlave3 >> /home/hadoop/.ssh/authorized_keys
3.追加完成后,回传给各个Slave节点
#传给Slave1
scp /home/hadoop/.ssh/authorized_keys hadoop@Slave1:/home/hadoop/.ssh/authorized_keys
#传给Slave2
scp /home/hadoop/.ssh/authorized_keys hadoop@Slave2:/home/hadoop/.ssh/authorized_keys
#传给Slave3
scp /home/hadoop/.ssh/authorized_keys hadoop@Slave3:/home/hadoop/.ssh/authorized_keys
4.测试
传完后,在Master节点测试是否需要密码。
ssh Slave1
若可以免密码登陆,则证明ssh免密登录配置成功。