许多人抱怨ubuntu系统,大概就是一些讨厌的预设配置,比如说hostname。最近做hadoop虚拟机集群,配完ssh密钥以后,发现互相登录——诶?怎么大家都叫做xxx@ubuntu?卧槽……这怎么整……Orz
这样不行啊。记得老早刚学习hadoop的时候就被这个ubuntu的hostname困扰不已,之前配成功了估计还是靠着运气。而这运气也并不是完全行得通,会出现启动hadoop要把/etc/hosts中的ubuntu留着,而启动oozie要把/etc/hosts里面的ubuntu注释掉。我就说怎么可能有这么愚蠢的逻辑。
果然原因是/etc/hostname里面设置了ubuntu的结果。果断改成相应的命名,如bigmaster、big1、big2等等。然后在/etc/hosts里面设置相应的ip地址。
/etc/hostname文件:
bigmaster
/etc/hosts文件:
127.0.0.1
localhost
192.168.136.134 bigmaster
这样重启linux以后,登录进去就不会出现
hadoop@ubuntu:~$
这样的命令行了,而是会出现这样的:
hadoop@bigmaster:~$
同时注意,执行ssh-keygen命令的时候,生成的公钥后面也会带有ubuntu的hostname。为了避免后期出现毛病,最好重新生成一遍ssh,或者重新配置一遍。直接改那个public key不是特别好。
【按照
《虚拟机Hadoop实战(二)详细步骤》方法配置3台机子相互免密登录失败】
这回生成的rsa密钥文件如下:
~/.ssh/id_rsa
(hadoop@bigmaster)
~/.ssh/id_rsa1
(hadoop@big1)
~/.ssh/id_rsa2
(hadoop@big2)
结果只有第一台机子bigmaster能免密登录到其它所有的机子,big1和big2均不行。
最后发现原因是ssh密钥文件命名是固定的,不能随意更改的。
遂将其全部改成不带数字结尾的id_rsa
同理id_rsa1.pub等也改成id_rsa.pub的形式
authorized_keys文件原封不动即可
【解决】测试后发觉各台机子免密登录都成功了