美文网首页玩转大数据大数据学习大数据 爬虫Python AI Sql
Hadoop完全分布式环境搭建之生成ssh秘钥并配置

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

作者: Alukar | 来源:发表于2018-05-21 15:53 被阅读15次

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

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

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

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

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

    指令:              

    [html] view plain copy

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

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

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

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

    指令:

    [html] view plain copy

    vim /etc/hostname  

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

    2.查看本机ip

    指令:

    [html] view plain copy

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

    记录一下ip

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

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

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

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

    指令:

    [html] view plain copy

    ssh-keygen -t rsa  

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

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

    指令:

    [html] view plain copy

    cd .ssh  

    ls  

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

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

    指令:

    [html] view plain copy

    cp id_rsa.pub authorized_keys  

    cat authorized_keys  

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

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

    指令:

    [html] view plain copy

    scp authorized_keys xqz@slave1:~/.ssh/  

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

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

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

    指令:

    [html] view plain copy

    cat id_rsa.pub >> authorized_keys  

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

    ...(此处为省略号)

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

    测试免密码链接

    指令:

    [html] view plain copy

    ssh xqz@slave1  

    用户名@主机名

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

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

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

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

    长按识别关注我们,每天都有精彩技术内容分享哦  ~ ~

    相关文章

      网友评论

        本文标题:Hadoop完全分布式环境搭建之生成ssh秘钥并配置

        本文链接:https://www.haomeiwen.com/subject/zbtqjftx.html