CentOS 6.5下搭建hadoop 2.6.0集群(三):SSH无密码验证配置

Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode

安装和启动SSH协议

我们需要两个服务:ssh和rsync,现在需要查看是否已经安装。可以通过下面命令查看结果显示如下:

[root@Master java]# rpm -qa | grep openssh
openssh-askpass-5.3p1-94.el6.x86_64
openssh-5.3p1-94.el6.x86_64
openssh-server-5.3p1-94.el6.x86_64
openssh-clients-5.3p1-94.el6.x86_64
[root@Master java]# rpm -qa | grep rsync
rsync-3.0.6-9.el6_4.1.x86_64

假设没有安装ssh和rsync,可以通过下面命令进行安装。

yum install ssh     //安装SSH协议
yum install rsync   //(rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)
service sshd restart    //启动服务

配置Master无密码登录所有Salve

SSH无密码原理
Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
Master机器上生成密码对
用普通用户权限在Master节点上执行以下命令:

[cls@Master ~]$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cls/.ssh/id_rsa): 
Your identification has been saved in /home/cls/.ssh/id_rsa.
Your public key has been saved in /home/cls/.ssh/id_rsa.pub.
The key fingerprint is:
e9:21:8d:c6:c6:eb:87:35:f6:4b:e7:e2:c7:90:1f:76 cls@Master.hadoop
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|     o o .       |
|      B S  .     |
|     o ++.o o E  |
|      .+.o.=.o   |
|     .. ..oo+    |
|      .. .o+.    |
+-----------------+

该操作会默认在”/home/cls/”下生成”.ssh”文件夹,且”.ssh”文件下包含两个刚生产的无密码密钥对。

然后是修改文件夹”.ssh”的用户权限,把他的权限修改为”700”,用下面命令执行:

chmod 700 ~/.ssh

备注:如果不进行,即使你按照前面的操作设置了”authorized_keys”权限,并配置了”/etc/ssh/sshd_config”,还重启了sshd服务,在Master能用”ssh localhost”进行无密码登录,但是对Slave1.Hadoop进行登录仍然需要输入密码,就是因为”.ssh”文件夹的权限设置不对。这个文件夹”.ssh”在配置SSH无密码登录时系统自动生成时,权限自动为”700”,如果是自己手动创建,它的组权限和其他权限都有,这样就会导致RSA无密码远程登录失败。
接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。

[root@Master .ssh]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@Master .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub

在验证前,需要做两件事儿。第一件事儿是修改文件”authorized_keys”权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置”/etc/ssh/sshd_config”的内容。使其无密码登录有效。
修改文件”authorized_keys”
操作如下:

cls@Master .ssh]$ chmod 600 ~/.ssh/authorized_keys
[cls@Master .ssh]$ ll
total 12
-rw-------. 1 cls cls  399 Dec 13 17:56 authorized_keys
-rw-------. 1 cls cls 1671 Dec 13 17:55 id_rsa
-rw-r--r--. 1 cls cls  399 Dec 13 17:55 id_rsa.pub

如果不进行设置,在验证时,仍然提示你输入密码。
设置SSH配置
用root用户登录服务器修改SSH配置文件”/etc/ssh/sshd_config”的下列内容。

RSAAuthentication yes   //启用 RSA 认证
PubkeyAuthentication yes    //启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys //公钥文件路径(和上面生成的文件同)

设置完之后记得重启SSH服务,才能使刚才设置有效。

[root@Master .ssh]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

退出root登录,使用hadoop普通用户验证是否成功。

[cls@Master .ssh]$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is 14:0c:45:37:2c:16:dd:21:62:7c:a4:0e:3d:48:62:0f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Last login: Sun Dec 13 17:50:40 2015 from localhost

从以上内容中得知无密码登录本级已经设置完毕,之后我们需要在每个节点上执行以上操作。
最后我们需要将每个节点中的id_rsa.pub追加到其他节点的文件中,以Mster.hadoop机器为例:

[cls@Master .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub cls@Slave1.hadoop
[cls@Master .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub cls@Slave2.hadoop
[cls@Master .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub cls@Slave3.hadoop

其他节点以此类推,最后达到的效果是:集群内任何一个节点都能无密码登录上集群中的任意节点。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值