一.准备环境
1) 用客户端工具(ssh client或者putty)连接到linux服务器。在root用户下输入命令
vi /etc/hosts,用vi编辑hosts文件,如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.199.131 hdp-1 hdp-1
192.168.199.132 hdp-2 hdp-2
192.168.199.133 hdp-3 hdp-3
192.168.199.134 hdp-4 hdp-4
2) 输入命令:cd .ssh进入rsa公钥私钥文件存放的目录,删除目录下的id_rsa,id_rsa.pub文件。
二、在每台机上产生新的rsa公钥私钥文件,并统一拷贝到一个authorized_keys文件中
1) 登录hdp-1,在.ssh目录下输入命令:
ssh-keygen -t rsa
[root@hdp-1 ~]# cd .ssh/
[root@hdp-1 .ssh]# ssh-keygen -t rsa
三次回车后,该目录下将会产生id_rsa,id_rsa.pub文件。其他主机也使用该方式产生密钥文件。
-rw-------. 1 root root 1679 12月 6 21:51 id_rsa
-rw-r--r--. 1 root root 392 12月 6 21:51 id_rsa.pub
2) 登录hdp-1下的 .ssh,输入命令:
cat id_rsa.pub >> authorized_keys
将id_rsa.pub公钥内容拷贝到authorized_keys文件中。
3) 登录其他主机,将其他主机的公钥文件内容都拷贝到hdp-1主机上的authorized_keys文件中,命令如下:
ssh-copy-id -i hdp-1 #登录hdp-2,将公钥拷贝到hdp-1的authorized_keys中
ssh-copy-id -i hdp-1 #登录hdp-3,将公钥拷贝到hdp-1的authorized_keys中
ssh-copy-id -i hdp-1 #登录hdp-4,将公钥拷贝到hdp-1的authorized_keys中
最终hdp-1下的 .ssh的authorized_keys文件内容如下:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTTHGCoH9im4dCauJZ8Vtx8SRDUQP6BmVtWg2eGl8vvydz6eazko/E1M0sPavjGok2YVcfWxrJfntrrtHdxIVBO0EhosXZo+AFEuHp/+JCKIXtCTJmI7leI7zPk6OjIMtVUoH+DkMZSyPDAHR0GOyqX75Vcqlf8Iv3xKTs3p4y6nuPNfUxS0eCI74p2g03Ktug85TvyW3YXxFTImPNNA7y51jOwHsUYziAmhsi1Qh3Cg0olP3WopPAifueJGCorZE2zYuJEmjx43JZsZ3qBMiH7Q5Wosn/GJc4Whd+n3sRkVradp+1r+xLaS5HtJWUSYgbV/iZCUtb9YG9d6gE4HYn root@hdp-1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6QFAo5aF6wMPC7B7LRj3Pri5FyezXRm2SbyFfesbxuT6D3DRj8Dqq9jGdZYny5+5x8sajy0vwhk+hlZ8zRGp4lRCqeZ4U/lkQCdBQGtoVYVmCQzyJhq76gIt+Fzl0Er8gTxO8lRuEGTlGU4dazV8xABOcNSaTV+nr9fy88dAPweuwRkjXl5ifEn0FsXtf3/FtjKFyW5LUMkKXji5cVlIwS1d6ez4nnDRGXPseQritG0I8dcisQyLj6dnNf51hrjNRu/oVbBOIVWAzXBHioSZyt3PJXO3GKson3cjA6aVvPKLiEmhAWv/GBi5tB05cqz5XqwLxIVfJ2atFPwpZJlL3 root@hdp-2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqRfnqpG8+1Z5p8pfrSClts27n+7pCfIMhKqi/6QHtBRM6BGcbwb8KYL5WKarG+DxuLBtlIz3rr9/wZDINSxqY+4wUkOq3T4Eq3bNnTMEJVxZpNq/s8lf2GiCysEiYprEVWRZE++XPF1Rj0Q+Wf4trXSMFoqWZK0SEgFlV007lyG8nhtqds+ns96zE+gFXAragm0QvnHYXEzxu1YC7i0dzZbEEhqcl5p+7ohUfTuzPWhz7D+3jPgVUvPIpEFF30AKvAa27u7MfMC1V+rAHqa/5yY3emR39PqH3rJ+1MCtnXSLti/A0lYd7kbg1BAVzcC+mQIqyoq0zwkFFKedf+QV1 root@hdp-3
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4aTeI6uE5WSgHcN09AeU3919q3klGIeMFgYME5XUAIW3E0SExN7Y0GrJVIbybiy0OSE1+s1lVonriSz8Rjv0YYm2rVODmKxTo8EjrsjZbMNaxR18zXgD0gYECfuSDSCuyb9uLpkKzzZeUsmN9rfMMYCLpLZch4rdW0P+xGcJSeaZ84F19DJaC8errWlVmZa6ut+xNlXACi+/D0oZM1KrbTwRR2q1Z7EW1mLy40v/FTywSezVlKIV8lMPxyfOHvQVjaVnpzZBpBG8u+VgEC4TFVBOvzBjXFJhQxzTBrJjPHfCobtn21NqlMqXFOca0xL3psfEAxvTzJvG45q8x+79f root@hdp-4
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzVlkOHWr0lzepPFlrmVKQAHCCPX4P9op98l/jtuukFY9WAIzCYe84grkSEmiLQMH5wW/5eicAk2V/HK5URkF1keouAE9Xj16V3Tog83orafO9iEN/RuGXrXwSgDw+RCJ0Nl4TYSEPPMbWIKAkOcxlHMRJFXpraIxFxykERSjtR24haxiDK+UfcjmcWVXO+oi6qGGiHqt63Eh9SAoE/PN9B5DVEwjett1l/4ZLp7QXuuzNHwJoCnh7VyOWB4Hk1t4A2jIQ9Z2jCc/3ffL9LA1NT7Dwda+Lzfzn0BilUZ5+zPjAde1TidWLQR6IQCbclVNQ6S87Po0AsfruE19VeLJJ root@hdp-4
三、授权authorized_keys文件
1) 登录hdp-1,在.ssh目录下输入命令:
chmod 600 authorized_keys
效果如下:
[root@hdp-1 .ssh]# ls -al
总用量 20
drwx------. 2 root root 80 12月 6 21:51 .
drwxr-xr-x. 15 root root 4096 12月 4 20:13 ..
-rw-------. 1 root root 1960 12月 8 08:58 authorized_keys
-rw-------. 1 root root 1679 12月 6 21:51 id_rsa
-rw-r--r--. 1 root root 392 12月 6 21:51 id_rsa.pub
-rw-r--r--. 1 root root 1611 11月 11 12:34 known_hosts
四、将授权文件分配到其他主机上
1) 登录hdp-1,将授权文件拷贝到hdp-2、hdp-3、hdp-4,命令如下:
scp /root/.ssh/authorized_keys hdp-2:/root/.ssh/ #拷贝到hadoop02上
scp /root/.ssh/authorized_keys hdp-3:/root/.ssh/ #拷贝到hadoop03上
scp /root/.ssh/authorized_keys hdp-4:/root/.ssh/ #拷贝到hadoop04上
2) 至此,免密码登录已经设定完成,注意第一次ssh登录时需要输入密码,再次访问时即可免密码登录。
例如:登录第二台机器:hdp-2
命令: ssh hdp-2
注:如果希望ssh公钥生效需满足至少下面3个条件:
1) .ssh目录的权限必须是700
2) .ssh/authorized_keys文件权限必须是600
3) 用户目录权限为 755 或者 700,就是不能是77x
注意:
如果发现在登录其中一台机器时还需要密码的话,那么可能是其中那台机器的权限问题
解决方案:https://blog.csdn.net/weixin_45034355/article/details/103442392