1.Hadoop中为什么要配置免密码登录

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

2.环境

Hadoop中有三个节点,分别是centosNameNode,centosDateNode1,centosDateNode2,我们现在要实现的是三个节点间的免密码登录,三个节点的信息如下:

centosNameNode: 192.168.10.66

centosDateNode1: 192.168.10.67

centosDateNode2: 192.168.10.68

3.免密码登录的大致流程

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

因为三个节点要相互访问,所以,三个节点都是客户端,也都是服务器端,我们分别在三个节点上创建

一对密钥文件,密钥文件包括公钥文件(~/.ssh/id_rsa.pub)和私钥文件 (~/.ssh/id_rsa)

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

客户端在使用ssh登录到其他节点上的时候,ssh会发送私钥去和其他节点上的公钥去匹配,如果匹配成

功,那么就会自动登录,而不需要输入密码,这就实现了无密码登录。  所以,客户端要实现免密码登录

到目标节点上的时候,就需要把公钥写入目标节点上的~/.ssh/authorized_keys中。

因为三个客户端节点(centosNameNode、centosDateNode1、centosDateNode2)要实现相互间

免密码登录,所以,每个客户端节点都需要将他们的公钥发送到剩余两个节点上,当然,由于客户端也可

以ssh到它自己,所以,可以把它自己的公钥也加入到他自己的~/.ssh/authorized_keys,因此,三个客

户端节点的公钥就相同了,我们可以将公钥全部发送的centosNamNode上,由centosNameNode将各

个客户端节点的公钥整合到~/.ssh/authorize_keys中,然后,用scp命令将 ~/.ssh/autorized_keys复制

到其他两个节点中,这样,就实现了客户端节点间相互ssh免密码登录。

<3>目标节点的配置

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

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

4.客户端创建密钥文件

<1>查看是否安装了ssh

一般情况下,系统都自带有ssh,查看ssh是否安装命令:ssh -version,

如果没有安装ssh,在命令行下输入:yum install ssh进行安装,可以参考下面的博文

http://www.cnblogs.com/alaska1131/articles/1659654.html

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

查看客户端节点是否已经创建了密钥文件,我们一centosNameNode为例。打开命令行,输入以下

指令: ls ~/.ssh,查看是否有密钥存在。

发现没有密钥文件,也就是没有公钥(id_rsa.pub)和私钥(id_rsa)

在centosNameNode上面创建密钥,打开命令行,输入以下指令:ssh-keygen -t rsa,注意,这个

命令行ssh 和 -keygen中间没有空格,如果写成ssh -keygen -t rsa,会报错误:

Bad escape  character 'ygen'

          

输入完ssh-keygen - rsa后,一直默认Enter下去,密码为空就行。如下图所示,说明生成密钥成功

然后,继续在命令行下输入ls ~/.ssh,查看是否多了两个文件(id_rsa.pub和id_rsa)

好,到这里,客户端节点的密钥文件已经创建完成,按照上述方法,依旧在centosDateNode1节点和

centosDateNode2节点上一次创建密钥文件。

5.将各客户端节点的公钥写入centosNameNode中

<1>将centosNameNode自己的公钥写入到自己的~/.ssh/authorized_keys中

打开命令行,输入

   cd ~/.ssh                               #切换目录到~/.ssh下

   ls                                      #再次确认是否有密钥

   cat id_rsa.pub >> authorized_keys       #将公钥写入

在命令行下输入vi ~/.ssh/authorized_keys,发现公钥已经写入了

OK,然后,就是修改sshd以及上面所提到的authorized_keys以及目录~/.ssh权限的修改

<2>centosNameNode中权限以及修改sshd

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

chmod  ~/.ssh
chmod ~/.ssh/authorized_keys

<3>验证自己ssh自己

打开命令行,输入:

ssh 192.168.10.66                  #centsoNameNode的ip

发现并没有要求输入密码,而是自动登陆了,说明自己的配置成功了,事实上Hadoop的伪分布式模

式就是自己远程登陆自己

<4>将其他两个节点的公钥加进来

登录到centosDateNode1,进入到命令行,输入:

cd ~/.ssh                                                                                  #进入到ssh目录下面

ls                                                                                              #检测目录下面是否有密匙

scp id_rsa.pub roboson@192.168.10.66:/home/roboson      #将文件传递到Ip地址为
                                                                                                         #192.168.10.66(centosNameNode)
                                                                                                         #/home/roboson目录下

说明上传成功,然后,登录到centosNameNode上,查看是否收到,输入指令:

cd /home/roboson                      #切换目录

ls                                                  #查看目录下的文件

如上图所示,说明收到了centosDateNode1的公钥id_rsa.pub

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

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

然后,输入vi ~/.ssh/authorized_keys指令,发现文件中又多了一堆数字

接下来,重启sshd(上面有),登录到centosDateNode,然后,在centosDateNode中,用ssh远程登陆

到centosNameNode中,看是否需要密码验证

有的时候,会报这样的错

          Agent admitted failure to sign using the key

解决方法:

在当前用户下执行命令:

ssh-add

然后,利用同样的方法,将centosDateNode2的公钥也加入。

6.将在centosNameNode中整合的文件掺入剩余两个节点

登录到centosNameNode上,然后,打开命令行,输入指令:

cd ~/.ssh

scp authorized_keys 192.168.10.67:/home/roboson/.ssh/authorized_keys  #将整合好的

#ahthorized_keys传递给

#centosDateNode1

ssh 192.168.10.67                      #远程登陆到centosDateNode1上,看是否需要密码

Hadoop分布式模式下SSH免密码登录的更多相关文章

  1. Linux下SSH免密码登录

    转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ...

  2. Linux下SSH免密码登录(转)

    搭建hadoop集群的时候一定会用到的就是SSH免密码登录 [hadoop@hadoop1 ~]$ ssh-keygen -t rsa Generating public/private rsa ke ...

  3. MAC下ssh免密码登录远程服务器

    生成密钥.在终端下执行命令: ssh-keygen -t rsa 一路回车,各种提示按默认不要改,等待执行完毕.然后执行: ls ~/.ssh #可以看到两个密钥文件:id_rsa(私钥) id_rs ...

  4. Mac下到Linux主机ssh免密码登录

    最近忙得忘乎所以,写篇博客放松放松,RT,直接上命令好了 # Local ssh-keygen -t rsa scp ~/.ssh/id_rsa.pub username@server:~/.ssh/ ...

  5. CentOS 6.5配置SSH免密码登录

    centos 系统对权限的设置非常微妙,如果权限设置大了则ssh 拒绝,如果权限小了,则ssh 更是被拒绝(我曾经配置好久没有打通,就是因为权限过大的原因) 参考链接:http://www.linux ...

  6. [Hadoop] - SSH免密码登录

    在安装hadoop之前需要进行ssh免密码登录,ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Redhat为例. 我这里只采用一台机器A(10. ...

  7. Hadoop集群搭建过程中ssh免密码登录(二)

    一.为什么设置ssh免密码登录 在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作.例如,某个脚本能够终止并重启集群中的所有守护进程.所以,需要安装SSH,但是,SSH远程登陆的时候,需 ...

  8. 多台CentOS服务器下实现SSH免密码登录

    ROOT用户下实现SSH免密码登录 第一步:进入目录/root/.ssh $ cd  /root/.ssh/ 执行以下命令,会在当前目录下生成公钥(id_rsa.pub)/私钥(id_rsa)对 第二 ...

  9. 安装Hadoop系列 — 安装SSH免密码登录

    配置ssh免密码登录   1) 验证是否安装ssh:ssh -version显示如下的话则成功安装了OpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 ...

随机推荐

  1. ceph中用sgdisk工具进行分区--------固定uuid

    ceph中两种类型分区的type code: type type code journal 45b0969e-9b03-4f30-b4c6-b4b80ceff106 osd 4fbd7e29-9d25 ...

  2. Python Twisted系列教程19:改变之前的想法

    作者:dave@http://krondo.com/i-thought-i-wanted-it-but-i-changed-my-mind/  译者: Cheng Luo 你可以从”第一部分 Twis ...

  3. Android屏幕适配方案——基于最小宽度(Smallest-width)限定符

    转自:https://www.cnblogs.com/error404/p/3815739.html 一.关于布局适配建议 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_ ...

  4. [ Python ] Flask 基于 Web开发 大型程序的结构实例解析

    作为一个编程入门新手,Flask是我接触到的第一个Web框架.想要深入学习,就从<FlaskWeb开发:基于Python的Web应用开发实战>这本书入手,本书由于是翻译过来的中文版,理解起 ...

  5. HTTP头的Expires与Cache-control区别

    2010年3月24日 a18ccms 发表评论 阅读评论 今天在群里聊天.说道了Expires.这里来说明下这两个的区别吧. 1.概念 Cache-control 用于控制HTTP缓存(在HTTP/1 ...

  6. Tkinter grid() 方法

        Tkinter grid() 方法:这个的几何管理器组织在父部件的表状结构中的部件.   这的几何管理器组织表状结构中的小部件的父部件. 语法: widget.grid( grid_optio ...

  7. MySQL多实例介绍

    我们前面已经做了MySQL数据库的介绍以及为什么选择MySQL数据库,最后介绍了MySQL数据库在Linux系统下的多种安装方式,以及讲解了MySQL的二进制方式单实例安装.基础优化等,下面给大家讲解 ...

  8. win8下ctrl+alt+down失效问题

    最近换win8系统后用myeclipse发现这个用得最多快捷键居然不能用了. 百度后的确是显卡的快捷键冲突,但禁用显卡快捷键后仍然无效,把eclipse换成其他的不能忍. 所以把显卡快捷键换了就可以了 ...

  9. 关于电机驱动扩展板 L293D 马达板Arduino

    注意端口3,4,5,6,7,8,9,10,11,12会被占用(板子上的pin口). 通过 MS_DCMotor motor(4); 中的4指的是4号电机,同理还有1-3号电机.不是pin口   舵机用 ...

  10. 【源码阅读】Java集合之三 - ArrayDeque源码深度解读

    Java 源码阅读的第一步是Collection框架源码,这也是面试基础中的基础: 针对Collection的源码阅读写一个系列的文章,本文是第三篇ArrayDeque. ---@pdai JDK版本 ...