继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

慕UI4062818
关注TA
已关注
手记 348
粉丝 97
获赞 552

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

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

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


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

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


指令:              

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

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

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


指令:

vim /etc/hostname


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

2.查看本机ip


指令:

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

记录一下ip

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


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

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


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


指令:

ssh-keygen -t rsa

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

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


指令:

cd .ssh

ls

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

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


指令:

cp id_rsa.pub authorized_keys

cat authorized_keys

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

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


指令:

scp authorized_keys xqz@slave1:~/.ssh/

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

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


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


指令:

cat id_rsa.pub >> authorized_keys

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

...(此处为省略号)

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


测试免密码链接


指令:

ssh xqz@slave1

用户名@主机名

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

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


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

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

当然了,为了安全,手段不止这一种。我这里也是简略介绍,有兴趣请查阅文献资料深入学习。

原文出处

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP