为了账号安全,请及时绑定邮箱和手机立即绑定

Hadoop完全分布式环境搭建之生成ssh秘钥并配置

标签:
Hadoop

首先说明,我模拟hadoop集群,创建了三个节点,分别为master,slave1,slave2,他们在本文配置基本一样,请各位举一反三。

还有,在做这步之前请在各节点中都安装好jdk(版本越高越好,当然,与你的hadoop版本协调)与openssh:

Linux CentOS 6.5 下载 oracle jdk修改环境变量

接下来我们依然做点准备工作(所有准备工作在root用户下完成)

1.创建新用户名及密码,但先不登录(为了节点安全考虑)

webp

指令:              

[html] view plain copy

useradd xqz     --(xqz是我的用户名)  

passwd xqz      --(更改xqz用户的密码,输入两次即可)  

创建完成后先不急着登录,这里还有一点,每个节点用户名必须一致!

1.给本机起名,便于访问,就是不要使用我们的ip了

webp

指令:

[html] view plain copy

vim /etc/hostname  

webp

以slave2节点举例,在编辑时先按i进入inster模式,编辑完成后按esc,输入:wq保存退出

2.查看本机ip

webp

指令:

[html] view plain copy

ifconfig -a        --信息过多的话shift+[PgUp/PgDown]进行翻页    

记录一下ip

3.配置hosts文件,也就是主机名与ip的映射

webp

以我为例,三个节点都要配置,因为可能使用ssh访问自身节点(这个截图是master节点,slave1,slave2都一样)

到这里为止,准备工作结束

现在开始生成ssh,每个虚拟机登陆下刚才创建的用户(以下虽然我以master节点在截图,当请各位举一反三)

webp

指令:

[html] view plain copy

ssh-keygen -t rsa  

其中-t配置秘钥类型,我们用rsa

中间会询问你一些文件位置,描述等,我们都回车跳过,这样ssh秘钥生成完毕,他放在.ssh隐藏文件夹下,我们去看看

webp

指令:

[html] view plain copy

cd .ssh  


ls  

我们看到.ssh文件夹下有两个文件,id_rsa与id_rsa.pub,分别是私有与公有秘钥

我们要把公有秘钥复制到一个authorized_keys文件内,这个文件的作用就是完成无密码访问,具体原因我们稍后再讲

webp

指令:

[html] view plain copy

cp id_rsa.pub authorized_keys  


cat authorized_keys  

(注意!这里的一步,只需要创建master的authorized_keys文件即可,其余节点我们从master发送过即可)

将master的authorized_keys文件传送给slave1和slave2

webp

指令:

[html] view plain copy

scp authorized_keys xqz@slave1:~/.ssh/  

用户名@主机名:文件位置

这里需要输入slave1节点xqz用户的密码,并且,我第一遍失败是因为没有现在slave1的xqz用户中生成rsa,即没有.ssh文件夹

webp

我们在slave1中查看一下发送过来的authorized_keys文件,发现文件末尾写着master,成功了(其实这一步就是为了让每个节点都拥有其余节点的id_rsa.pub,即公钥,你也可以用复制粘贴做)

webp

指令:

[html] view plain copy

cat id_rsa.pub >> authorized_keys  

这里有个小知识cat指令中 >>代表追加,>代表覆盖,那么这里就是把slave1的id_rsa.pub追加到我们刚才发送过来的文件末尾

...(此处为省略号)

继续发送与追加,我们的最终目的就是让每个节点都拥有所有的公钥,这里我就不赘述了

测试免密码链接

webp

指令:

[html] view plain copy

ssh xqz@slave1  

用户名@主机名

我们在master中链接slave1,注意看指令域已经变成了slave1,说明我们连接成功了,而且没有输入过密码

至此,我们大功告成!下面讲解下ssh免密码登录的具体机制

首先我们要清楚一件事,就是rsa密码,这是一种非对称密码,也就是说,它分为公钥与私钥,公钥面向全世界,私钥只能自己拥有(别人知道了就不安全了)。至于其具体的密码学或者说数学知识,最传统的密码学教科书都会有。公钥与私钥有一个特性,那就是公钥加密的文件只能私钥解密,基于这个特性,我们来建立一些安全措施,就是我们之前使用的ssh。

回想下我们刚才的配置工作,最重要的就是把所有的公钥卸载authorized_keys文件中,那么,当我们的节点访问其余节点时,他会遍历authorized_keys文件,使用其中的公钥加密一个即将约定的密码,这个加密后的密码只能由私钥进行解密,如果被访问节点允许访问,就会保留这个密码,并返回响应,接下来,两节点使用密码访问即可,不需要我们手动输入。 



作者:Alukar
链接:https://www.jianshu.com/p/5dafe94e1e79


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 1
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消