前一段时间配置hadoop集群环境,发现一个现象,教程中的命令形式是ssh hostname,当然这个hostname应该是在ssh发起者的hosts文件中和相应的IP对应;现在问题来了:
我用的是mac,用户名是fanjiajia,其他三台节点都是centos,用户是slave1,slave2,slave3,这个时候我在mac的/etc/hosts文件中配置的Ip对应的是:
192.168.62.131 hadoop.slave1
192.168.62.132 hadoop.slave2
192.168.62.130 hadoop.slave3
首先ping是可以通的,这毫无疑问,现在我要通过ssh连接到slave1上面去,问题来了:一开始让我输入ssh hadoop.slave1. 我以为就可以了。但是失败了,好几次都失败了;
等我仔细一看,让我输入密码:fanjiajia@hadoop.slave1;意思就是输入hadoop.slave1上面用户fanjiajia的密码,我勒个去。拿上面怎么会有fanjiajia这个用户,很懵逼,当时归结的原因是由于我这边的用户是fanjiajia,所以直接ssh,默认寻找的就是hadoop.slave1上的对应用户;
就在刚才,我用了学院云平台的虚拟机,对应的用户是root,即hadoop在root用户下,这时候我依旧在mac上用fanjiajia用户ssh去连接,同样的错误,但是我将mac切换到root下,ssh IP(对方ip),通了,就这样,神奇的一幕出现了;哈哈
总结(个人观点,可能有出入):当我们在两台机器上使用相同的用户名时,这时候可以用ssh直接连接对方的IP,比如双方都是root用户下,比如A和B的两个普通用户都是hadoop,那么这时候同样可以,但是如果不同用户名直接ssh,需要在用:ssh username@IP,表示连接到IP下的username用户;
这是现阶段我的理解,如果将来理解透彻了,会回来修改的;但是上面的方法是可行的