SSH简介与Hadoop集群环境搭建之 SSH免密钥登录

来源:互联网 发布:双四选一数据选择器 编辑:程序博客网 时间:2024/06/05 19:05
关于ssh
  • 简介

SSH(secure shell) 是一种网络服务程序,相对于FTP与Telnet而言,传输数据更加安全与高效。安全是因为SSH会对传输的数据加密,而FTP直接以明文的形式传输用户的用户名与IP等信息

容易被中间人截取信息并篡改。高效是因为SSH会对传输的数据进行压缩。

  • 通信过程

这里以A、B两台服务器为例,加以说明SSH的通信过程(此处应该有图的,但是逼人操作系统有bug,导致无法画图-使用Libre Office

画图就会出现鼠标选择的文件或者鼠标所在行的文字都会被删除,无语中 。。。)

1、首先在A上生成一对密钥(公钥与私钥)2、将公钥拷贝到B下的authorized_keys文件中3、A向B发送一个请求,信息包括自身的用户名与IP等4、B获取A的请求信息后,去authorized_keys文件中查找:如果有相应的用户名与IP,B会随机生成一个用于验证的字符串,例如:asdf5、B使用公钥对asdf串进行加密后,发送给A6、A接收到加密后的asdf字符串后,用私钥进行解密,然后将解密后的字符串发送给B7、B将收到的解密后的字符串与原始字符串asdf进行对比:若相同,则验证通过,否则提示相关异常信息。

Hadoop集群环境搭建之 SSH免密钥登录
转自:http://www.linuxidc.com/Linux/2015-01/112032.htm
原文

Hadoop使用ssh来通信。所以操作系统上必须安装ssh,本人采用的是Ubuntu 14,安装ssh后要保证sshd处于运行状态,如果没有安装ssh的话,

结点信息:(分布式集群架构:master为主节点,其余四个为从节点)

机器名

IP

作用

master

122.205.135.53

NameNode and JobTracker 

hadoop

122.205.135.212

DataNode and TaskTracker 

hadoop1

122.205.135.213

DataNode and TaskTracker

hadoop2

122.205.135.214

DataNode and TaskTracker

hadoop3

122.205.135.215

DataNode and TaskTracker

使用以下命令来安装:

$ sudo apt-get install ssh

$ sudo apt-get install rsync

这里注意:如果提示安装不了,说明我们的apt-get需要更新下,更新的命令如下:

sudo apt-get update

安装完成后出现如下图:

Hadoop主从节点之间建立SSH无密码登录

在Hadoop启动以后,namenode是通过SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。

namenode生成密钥:

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

执行上述命令后会出现如下图:

Hadoop主从节点之间建立SSH无密码登录

这时候会在~/.ssh/目录下生成 id_dsa.pub文件,如果我们希望master 结点不需要密码就能使用ssh连接到slave结点,我们需要将master结点上的~/.ssh/id_dsa.pub的内容,添加到slave结点的~/.ssh/authorized_keys这个文件中。

如果slave结点的~/.ssh/authorized_keys这个文件不存在,可以直接将~/.ssh/id_dsa.pub文件复制过去并重命名为authorized_keys:

$ scp ~/.ssh/id_dsa.pub hadoop@122.205.135.212:~/.ssh/authorized_keys

Hadoop主从节点之间建立SSH无密码登录

这时,我们在122.205.135.212这个slave的机器中登陆进去看下,这个文件是否复制过去了,命令如下:

cd  ~/ssh

ls

Hadoop主从节点之间建立SSH无密码登录

也可以先将master结点的~/.ssh/id_dsa.pub文件复制到slave结点的~/.ssh/目录下,例如:

$ scp ~/.ssh/id_dsa.pub hadoop@122.205.135.212:~/.ssh

或用

$ scp ~/.ssh/id_dsa.pub hadoop@hadoop:~/.ssh

        然后在slave结点上执行下面的命令:

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

 Mr.Snail 注:最简单的命令实现免密钥登录

# ssh-copy-id targetServerName

其中 targetServerName 即为要免登录的服务器主机名称或者IP地址。本文 使用 :#ssh-copy-id 122.205.135.212 即可!

        最后,我们验证是否可以无密码登陆:在master结点上使用ssh连接slave结点,例如:

$ ssh hadoop@hadoop

      如果未提示输入密码直接登录,则表明设置成功。

Hadoop主从节点之间建立SSH无密码登录

CentOS 6.0下SSH免密码登录配置 http://www.linuxidc.com/Linux/2013-03/80488.htm

提高Ubuntu的SSH登陆认证速度的办法 http://www.linuxidc.com/Linux/2014-09/106810.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-01/112032.htm

 Mr.Snail 注 - 可能出现配置免密钥后还是需要输入密码:
原因实际上上图中已经有提示了:“Permission 0644 for ' /home/../id_dsa' are too open” 即 文件 id_dsa 权限太open了。执行以下命令就ok:# chmod 700 id_dsa
0 0
原创粉丝点击