Ubuntu之hadoop-分布式集群ssh免密码登录

配置ssh的实现思路:

1、在每台机子上都使用ssh-keygen生成public keyprivate 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文件需要600644权限,参考以下操作调整
$sudo chmod   644   ~/.ssh/authorized_keys
2、StrictModes问题
$sudo gedit /etc/ssh/sshd_config
找到
#StrictModes yes
改成
StrictModes no

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


小结:
在各节点上生成公钥、私钥,
然后将公钥发放其它所有节点。

你可能感兴趣的:(大数据,大数据)