Hadoop集群服务器之间进行通信操作需要从一台服务器ssh方式登陆到另一台服务器,为了不进行用户名和密码的输入,直接登陆对对方服务器的文件进行操作,不做任何校验和拦截,
可以使用免秘钥方式。
启动Hadoop集群时,因为是主从架构,需要主节点上执行启动命令,主节点带动从节点,这样主就要分别访问从,必须要做免密登陆。
生成秘钥需要在主服务器HadoopMasterServer,然后把HadoopMasterServer的公钥复制到HadoopSlaveServer1和HadoopSlaveServer2上,就可以直接通过私钥打开HadoopSlaveServer1和HadoopSlaveServer2上的私钥
校验锁
这里需要切换使用hadoop的操作用户进行生成 如果你在root登陆下 使用“su hadoop操作用户名“登陆账号切换
再去生成秘钥命令:
ssh-keygen -t rsa
生成后文件被存放到了/home/用户名/.ssh
私钥在id_rsa
公钥在id_rsa.pub
复制公钥到文件到authorized_keys文件下,这是自行创建的文件,不会对原公钥文件产生影响
cat /home/用户名/.ssh/id_rsa.pub >> /home/用户名/.ssh/authorized_keys
文件创建成功,而且内容与id_rsa.pub一致
修改authorized_keys权限为只有当前用户可以操作该文件
chmod 600 /home/用户名/.ssh/authorized_keys
注意命令中的空格问题,如上图
把公钥authorized_keys 复制到HadoopSlaveServer1下,
scp authorized_keys slave1的用户名@slave1:/home/用户名/.ssh/
这里遇到的问题是HadoopSlaveServer1 下的用户下没有.ssh文件夹,会提示错误,而且也不会自动创建
- 解决方法
ssh localhost
就会生成 .ssh目录
然后再去执行scp authorized_keys slave1的用户名@slave1:/home/用户名/.ssh/ 就能在对应目录下看到authorized_keys文件了
chmod 600 authorized_keys
slave2也是同slave1一样