配置ssh的实现思路:

1、在每台机子上都使用ssh-keygen生成public key,private key
2、所有机子的public key都拷到一台机子如master上
3、在master上生成一个授权key文件authorized_keys
4、最后把authorized_keys拷给所有集群中的机子,就能保证无密码登录

1 先在master上,在当前用户目录下生成公钥、私钥对

执行命令
$ssh-keygen -t rsa -P ”

2 导入公钥

执行命令
$cat .ssh/id_rsa.pub >> .ssh/authorized_keys

执行完以后,可以在本机上测试下,用ssh连接自己

执行命令
$ssh maste

如果提示要输入密码,
查看authorized_keys文件权限,
如果是属于其他用户的,
需要修改该文件给其他用户权限

执行命令
$chmod 644 .ssh/authorized_keys

修改文件权限,然后再测试下 ssh master,如果不需要输入密码,就连接成功,表示ok,一台机器已经搞定了。

出现问题试解决:

请先检查SSH服务是否启动,如果没启动,请启动!

如果没有.ssh目录则创建一个:
执行命令
$cd /home/hadoop
$mkdir .ssh

如无权限,使用命令修改要操作文件夹的owner为当前用户:
执行命令
$sudo chown -R hadoop /home/hadoop

3 在其它机器上生成公钥、密钥,并将公钥文件复制到master

执行命令
在slave1上:
scp .ssh/id_rsa.pub hadoop@master:/home/hadoop/id_rsa_1.pub
在slave2上:
scp .ssh/id_rsa.pub hadoop@master:/home/hadoop/id_rsa_2.pub

master中,查看下/home/hadoop目录,应该有二个新文件id_rsa_1.pub、id_rsa_2.pub

在master上,导入这二个公钥

执行命令
$cat id_rsa_1.pub >> .ssh/authorized_keys
$cat id_rsa_2.pub >> .ssh/authorized_keys

这样,master这台机器上,就有所有3台机器的公钥了

4 将master上的“最全”公钥,复制到其它机器

在master上
执行命令
$scp .ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/authorized_keys
$scp .ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh/authorized_keys

修改其它机器上authorized_keys文件的权限
slave1以及slave2机器上,均执行命令
chmod 600 .ssh/authorized_keys

5 验证

在每个虚拟机上,均用命令 ssh+其它机器的hostname
都能正常无密码连接成功

执行命令
$ssh slave1
$ssh master
$ssh slave2

6.SSH免密码设置失败解决

1、权限问题
.ssh目录,以及/home/当前用户 需要700权限,参考以下操作调整
$sudo chmod 777 ~/.ssh
$sudo chmod 700 /home/当前用户
.ssh目录下的authorized_keys文件需要600或644权限,参考以下操作调整
$sudo chmod 644 ~/.ssh/authorized_keys

2、StrictModes问题
$sudo gedit /etc/ssh/sshd_config
找到
#StrictModes yes
改成
StrictModes no
1

如果还不行,可以用ssh -vvv 目标机器ip 查看详情

小结:
在各节点上生成公钥、私钥,
然后将公钥发放其它所有节点。
————————————————
版权声明:本文为CSDN博主「沐雨金鳞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38262266/article/details/79154494