配置ssh无密码访问:
比如,A是server,B是client,现在B希望通过ssh无密码访问A,那么就需要把B的公匙放到A的authorized_keys文件中。
1。首先需要A支持这种访问模式:
配置A的/etc/ssh/sshd_config,将这两项设置如下:
RSAAuthentication yes
PubkeyAuthentication yes
2。B生产id_rsa.pub,并将这个文件中的内容最终用“>>”添加到A的authorized_keys文件末尾。
3。在B上,ssh A的ip/A的hostname就可以实现无密码登陆A了
但是这么做是有前提的,很多人都忽略了这个前提,导致费了很多周折都没有成功,就像我似的,我就费了很多时间才找到问题所在。
因为A或B机器里都有很多个账户,在B上键入ssh命令后,我们并没有制定连接到A上的那个帐户,那么这里面默认的潜规则是什么呢?就是你在B上ssh时,当前使用的那个帐户(假如名字是haha)就会作为你期待连接到A上的帐户,我们可以显示的通过ssh -l haha [hostname]或者ssh haha@[hostname]这种方式来连接到A上的haha帐户,如果用隐士规则的话,那么系统就是依据你在B上当前使用的帐户来作为A上被连接的帐户。
因此,要实现无密码访问的前提就是:A和B上有同样的帐户名称,完全一致,包括大小写。(我就很郁闷,因为我在windows下用cygwin和一个linux机器连接,windows下的帐户第一个字母大写了,而linux的帐户的第一个字母是小写的,导致我费了很长时间都没有发现问题症结所在)。其实,这也就是为什么在配置hadoop分布式计算时,必须要求的每个机器上都必须有一个完全一样的用户名。
既然说到了后面的这些注意事项,那么也要提醒大家,在上面给出的三个步骤中的第2步,必须是在等同的帐户下得到的id_rsa.pub文件,否则还是不行。