zoukankan      html  css  js  c++  java
  • Hadoop集群搭建过程中ssh免密码登录(二)

    一、为什么设置ssh免密码登录

    在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作。例如,某个脚本能够终止并重启集群中的所有守护进程。所以,需要安装SSH,但是,SSH远程登陆的时候,需要密码验证,集群中数千台计算机,数千台计算机都需要手工输入密码,这是不太现实的,所以,就需要配置SSH无密码登录。

    二、环境

      Hadoop集群,虚拟机中安装了4个节点,为centos操作系统

      node-001 : 192.168.38.131

      node-002 : 192.168.38.132

      node-003 : 192.168.38.133

      node-004 : 192.168.38.134

    三、设置免密码登录流程概述

       <1>在客户端创建密钥文件

      因为四个节点要相互访问,所以,四个节点都是客户端,也都是服务器端,我们分别在四个节点上创建 一对密钥文件,密钥文件包括公钥文件(~/.ssh/id_rsa.pub)和私钥文件 (~/.ssh/id_rsa)  。

       <2>把公钥文件放到要登录的节点上

                  客户端在使用ssh登录到其他节点上的时候,ssh会发送私钥去和其他节点上的公钥去匹配,如果匹配成功,那么就会自动登录,而不需要输入密码,这就实现了无密码登录。  所以,客户端要实现免密码登录到目标节点上的时候,就需要把公钥写入目标节点上的~/.ssh/authorized_keys中。因为四个客户端节点(node-001、node-002、node-003、node-004)要实现相互间 免密码登录,所以,每个客户端节点都需要将他们的公钥发送到剩余三个节点上,当然,由于客户端也可以ssh到它自己,所以,可以把它自己的公钥也加入到他自己的~/.ssh/authorized_keys,因此,四个客户端节点的公钥就相同了,我们可以将公钥全部发送的node-001上,由node-001将各 个客户端节点的公钥整合到~/.ssh/authorize_keys中,然后,用scp命令将 ~/.ssh/autorized_keys复制  到其他两个节点中,这样,就实现了客户端节点间相互ssh免密码登录。

       <3>目标节点的配置

    权限问题: .ssh目录的权限必须是700

          .ssh/authorized_keys文件权限必须是600 
    配置目标节点:修改sshd配置文件(/etc/ssh/sshd_config)

    四、客户端创建秘钥文件

    1.查看是否安装了ssh

    ~目录下,ls -a,.ssh隐藏文件夹

    ssh -version

    没有的话安装:  yum install -y openssl openssh-server 

    2.在客户端节点创建密钥文件

     输入 ls ~/.ssh,查看是否有密钥存在。

    创建密钥,输入以下指令: ssh-keygen -t rsa ,一直默认Enter下去,密码为空就行。

    输入ls ~/.ssh,查看是否多了两个文件(id_rsa.pub和id_rsa)。

    依次在各个节点创建密钥文件

    五、将各个客户端节点公钥写入node-001中

    1.将node-001自己的公钥写入到自己的~/.ssh/authorized_keys中

     ls                                      #再次确认是否有密钥
    
     cat id_rsa.pub >> authorized_keys       #将公钥写入

    在命令行下输入vi ~/.ssh/authorized_keys,查看公钥是否写入,修改sshd以及上面所提到的authorized_keys以及目录~/.ssh权限的修改  

    2.node-001中权限修改以及sshd

     修改目录~/.ssh以及~/.ssh/authorized_keys文件的权限,打开命令行,输入:

    chmod 700 ~/.ssh
    
    chmod 600 ~/.ssh/authorized_keys

    3.自己验证ssh登录自己

     ssh 192.168.38.131                  #node-001的ip

    如果不需要密码就能登录成功,则说明ssh成功

    4.将其他三个节点的公钥加入node-001进来

    进入node-002节点:

    cd ~/.ssh                                                      #进入到ssh目录下面
    
    ls                                                             #检测目录下面是否有密匙
    
    scp id_rsa.pub lims@192.168.38.131:/home/tmp                   #将文件传递到Ip地址为 192.168.38.131(node-001)的/home/tmp目录下
    
    或者 scp id_rsa.pub lims@node-001:/home/tmp                     #在hosts中配置了ip映射

    上传成功,切换到tmp目录,查看公钥是否存在

    将公钥写入到centosNameNode的~/.ssh/authorized_keys文件中,打开命令 行,输入指令:

    cat /home/roboson/id_rsa.pub >>~/.ssh/authorized_keys

    查看,输入vi ~/.ssh/authorized_keys指令,发现文件中又多了一堆数字。然后在node-002利用远程登录,验证是否成功

    有的时候,会报这样的错

              Agent admitted failure to sign using the key

              解决方法:

              在当前用户下执行命令:

              ssh-add

              然后,利用同样的方法,将其他两个节点的公钥也加入。

    六、将文件加入所有节点

    以上可以用客户端节点登录node-001,为了所有节点互相免密登录,将authorized_keys 文件远程拷贝到集群所有节点

    scp authorized_keys 192.168.10.67:/home/roboson/.ssh/authorized_keys

    最后互相ssh验证

  • 相关阅读:
    终于学会用WinCVS来开源了
    从网上收集EMail(正则表达式,C#源码)
    元宝NewBar发布1.2.0测试版
    使用Gimp切图
    shell编程笔记
    poj2485
    poj 3630 字典树
    杭电oj题目和分类
    强连通分量Kosaraju算法
    随机数的产生
  • 原文地址:https://www.cnblogs.com/limaosheng/p/10444515.html
Copyright © 2011-2022 走看看