今天在搭建hadoop集群时遇到了一些问题,主要是ssh免登录的问题。配置完成过后经常是3台虚拟机中有一台可以访问前两台,但访问自己却出错,另外的是只能访问自己不能访问另外的机子。为此自己也是折腾了好几晚。(自己比较笨)。从网上查资料问题解释的很多,方法很多。我就从自己的经验给大家说说吧。
首先是产生公私密钥,方法我用了两种:
第一种是:ssh-keygen(一路回车),在此过程中会询问一些问题,只管回车就可以了。产生的公私密钥都存放在当前用户下的.ssh文件夹下,里面有id_rsa 和id_rsa.pub.其中id_rsa.pub是公钥,我们能够实现免登陆都靠他。将公钥复制命名为authorized_keys。如果幸运的话,用ssh+当前用户 就可以实现免登陆。(大多第一次需要输入密码,第二次就不用了)
第二种是:sh-keygen -q -t rsa -N "" -f /home/hadoop/.ssh/id_rsa或者ssh-keygen -t rsa -p '' -f ~/.ssh/id_rsa我比较喜欢字少的。字多的输入会出现一些马虎错误。省了敲回车,剩下的步骤同上。
有些一些不幸就会发生,并不是所有人都很幸运。在机子自身免登陆会遇到各种问题。主要是多次试验,多次输入密码。面对这种情况。我的方法是修改文件权限。chmod600 authorized_keys .
和chmod 700 .ssh .许多问题就是在修改权限之后变得正常了。
以上两张图分别是:修改权限前.ssh的状态。和多次登录竟然要输密码。有些时候权限没有错,当就是出问题。这种情况也只能硬着头皮改了。改完就正常了。(很让人无语)。
接着就是集群间ssh免登陆遇到的一些个问题。
先说合并公钥的方法:首先三台机子必须都产生密钥。接着将其他的公钥加入到第一台机子密钥中。参考代码:
scp id_rsa.pub hadoop@hadoop1:/home/hadoop/.ssh/hadoop2_key
cat hadoop2_key >> authorized_keys加入后可以使用vi /etc/authorized 查看是否加入
在将authorized_keys 分发到其他从机上。代码:scp authorized_keys hadoop@hadoop2:/home/hadoop/.ssh/
验证:
ssh hadoop1
ssh hadoop2