重点理解之处:A想登录B,就把A上生成的公钥发送到B上
A将公钥发给B,不是B可以访问A,而是A可以访问B,所以任何一台机器想要能访问其他机器,那么就把自己的公钥内容发送到别的机器的authorized_keys中去,记住,是追加,不是覆盖
在操作过程中,千万不要真的用copy,或是scp发送,这样会对自己机器或者对方机器的原有配置造成覆盖或是丢失,总之会破会两台机器的原有配置,风险太大!
按如下方法既安全又操作简单,不易出错,最重要的是不对两台机器的原有配置带来任何的破环
具体如下:
>>> ssh-keygen -t rsa
>>> ssh-copy-id -i id_rsa.pub hadoop@node2
在node1上,分别执行上述两条命令,即可实现在node1 ssh免密登录node2 ;
那么在搭建集群(以搭建三台机器的集群为例,node1,node2,node3)时即可按下面方法进行:
在node1 上执行
>>> ssh-keygen -t rsa
>>> ssh-copy-id -i id_rsa.pub hadoop@node1
>>> ssh-copy-id -i id_rsa.pub hadoop@node2
>>> ssh-copy-id -i id_rsa.pub hadoop@node3
------------------------------------------
在node2 上执行
>>> ssh-keygen -t rsa
>>> ssh-copy-id -i id_rsa.pub hadoop@node1
>>> ssh-copy-id -i id_rsa.pub hadoop@node2
>>> ssh-copy-id -i id_rsa.pub hadoop@node3
------------------------------------------
在node3 上执行
>>> ssh-keygen -t rsa
>>> ssh-copy-id -i id_rsa.pub hadoop@node1
>>> ssh-copy-id -i id_rsa.pub hadoop@node2
>>> ssh-copy-id -i id_rsa.pub hadoop@node3
到此即可实现三台机器互相免输密码进行ssh登录
20210804更新:
注意:在配置ssh免密登录时,自己登录自己也要配置,不然分发时还是会有问题
20230828更新:
注意:在配置时要在对应账户下执行,比如都在root下或是都在test_user下