前提配置:使用root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉,如下:
然后重启ssh服务:service sshd restart。最后退出root,以下所有操作都在Hadoop用户下进行。
主机信息如下:
如上图,当前登录用户为hadoop,主机名为slave.hadoop,与master.hadoop主机的网络是通畅的。
当前未配置RSA校验的情况下,用ssh连接主机是需要输入密码的,如下:
如上图,执行ssh master.hadoop后会停留在下一行等待使用者输入master.hadoop主机hadoop用户的登录密码。
为避免此情况发生,进行如下操作以让主机在ssh连接时自动验证后登录。
首先,执行命令 ssh-keygen -t dsa 生成密钥对,如下:
如上图,密钥文件按照默认方式,在主目录/home/hadoop下的隐藏目录.ssh中生成,分别为id_dsa和id_dsa.pub,后者为公钥,如下图:
根据配置文件/etc/ssh/sshd_config中的AuthorizedKeysFile项的取值:.ssh/authorized_keys,公钥需要导入到该文件中才能实现校验,如下:
至此离成功只有一步之遥了。CentOS默认新生成的文件权限为:-rw-rw-r–,即自己和群组用户都可以重写该文件,这被认为是不够安全的。如上图,由于此前我的主机上并未存在authorized_keys文件,现在由于重定向输出新建了该文件,因此该文件的默认权限为-rw-rw-r–仍旧不够安全。需把群组中的w权限去掉。可使用命令:chmod 644 authorized_keys。网上的资料中,都是直接chmod 600 authorized_keys,即群组和其他用户连读取文件内容的权限都没有,当然这样是最安全的,但是系统只要求到除了自己之外其他所有用户均不能改动文件就可以了。
如上图,slave.hadoop已经能够使用ssh无密码登录本机了。那么如何让它无密码登录到Master.hadoop主机中呢?当然是分发公钥文件id_dsa.pub的内容到master.hadoop主机上了。如下图:
如上图,执行命令 cat ~/.ssh/id_dsa.pub | ssh hadoop@master.hadoop ‘cat – >> ~/.ssh/authorized_keys’,并输入master.hadoop主机的hadoop用户的登录密码,即可将公钥发送到master.hadoop并追加到其authorized_keys文件中。
如上图,已经可以在slave.hadoop主机使用ssh无密码登录主机master.hadoop了。
CentOS 下SSH无密码登录的配置 http://www.linuxidc.com/Linux/2012-05/61346.htm
更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14