SSH免密码登录目的是为了执行HDFS脚本时使用,而不是为了搭建HDFS使用,配置hadoop集群时,不怕输密码麻烦也可以不配置SSH免密码登录
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。
这里只记录本人在搭建hadoop HA时如何设置免密码登录,至于基本原理等如有不理解需自行百度。
这里本人使用root用户,若改为普通用户需考虑权限问题
1、第一次检查
ssh localhost
PS:远程成功后记得exit退出
2、创建本地秘钥并将公共秘钥写入认证文件
每台机器创建私钥,公钥
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
这时~/.ssh目录下会生成私钥和公钥的键值对 id_dsa 和 id_dsa.pub
node1将公钥写入认证文件中,将node1的认证文件拷贝到node2
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys scp ~/.ssh/authorized_keys root@node2:~/.ssh/authorized_keys
将node2的公钥追加到认证文件中
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
查看node2 的 ~/.ssh/authorized_keys 发现
查看authorized_keys里面有多个server的公钥信息,如果你有多个server同样往里面加就好了
node1将公钥写入认证文件后,authorized_keys里面的server公钥信息增加了 root@node1
root@node2是node2将公钥信息加入认证文件中的而结果
当一台机器的认证文件中有了server对应的公钥信息,例如root@node1,则node1这台
机器ssh这台机器是免密码的。
3、将~/.ssh/authorized_keys文件复制到各节点上
scp ~/.ssh/authorized_keys root@node1:~/.ssh/authorized_keys scp ~/.ssh/authorized_keys root@node3:~/.ssh/authorized_keys scp ~/.ssh/authorized_keys root@node4:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys root@node4:~/.ssh/authorized_keys
这时候再ssh登录,这时候就不用再输入密码啦
4、注意:
当用户为非root用户时需要
更改authorized_keys权限
chmod 600 authorized_keys
并在root用户下重启一下ssh
/etc/init.d/sshd restart