88bifa手机登入 20

Linux(CentOS)SSH无密码验证登陆

最近在搭建Hadoop集群,为了操作方便,需要Master用无密码验证的方式的SSH登陆Slave。

配置SSH无登陆验证,在很多场景下是非常方便的,尤其是在管理大型集群服务时,避免了繁琐的密码验证,在安全级别越高的服务器上,通常密码的设置更复杂,配置SSH,不仅可以用密钥保证节点间通信的安全性,同时也降低了频繁输入密码登陆的耗时,大大提高了管理效率。散仙写此篇文章,也是给准备入手Hadoop的道友们先做好一个基础的准备,当然你也可以不配置SSH,只要你愿意频繁输入Slave节点的密码来登陆。

1.原理:
Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。

  1. SSH无密码验证的原理 

2.在Master上登陆Hadoop用户,执行以下命令,生成密钥对,并把公钥文件写入授权文件中,并赋值权限

Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。 

[hadoop@master bin]$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
93:21:fb:20:01:c9:13:a3:28:01:6c:57:3b:a0:e0:e2 hadoop@master
The key's randomart image is:
+--[ RSA 2048]----+
|*.++..           |
|+==+. .          |
|*o...o. .        |
|+    ..o o       |
| E  . o S        |
|     . o .       |
|        .        |
|                 |
|                 |
+-----------------+
[hadoop@master bin]$  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@master bin]$ chmod 600 ~/.ssh/authorized_keys

2.SSH无密码登陆的几种关系 

3 切换root用户,配置sshd,取消被注释的公钥字段,
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #
公钥文件路径(和上面生成的文件同)
并保存设置,然后重启sshd,即可测试本机的SSH

通常情况下,一个集群服务下至少有一个Master和若干个Slave 
,那么无密码登陆通常指的是由Master到任意一个Slave的无验证的单向登陆,意思就是只能从Master登陆到Slave是不需要密码的,但是如果你想从Slave无验证登陆到Master,或者你想在Slave与Slave之间进行无验证登陆,这些都是不可行的,除非,你进行了密钥对的双向验证,才可以双向登陆,我们在这里先不去议论相互之间登陆有没有意义,可能某些情况下或许需要这些方式。 

[hadoop@master bin]$ su root
密码:
bash-4.1# vim /etc/ssh/sshd_config
bash-4.1# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
节点名 IP地址
Master 10.2.143.5
Slave 10.2.143.36

4.本机测试:这里我用了localhost,IP地址,hostname来进行测试,可以发现均不需要输入密码。

下面开始步入正题,散仙使用的是CentOS6.4版本的,配置的是2个节点之间的双向的SSH无验证登陆,其他几种系统的也大同小异,我们首先使用root用户登陆,在network中修改机器名,并在hosts文件中添加映射信息,然后执行保存退出,Slave机按同样方法配置,具体操作见下图 

[hadoop@master bin]$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is 3a:99:7f:41:68:bd:3b:80:43:bb:8a:5c:62:73:1f:45.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
[hadoop@master ~]$ ssh 172.16.1.17
The authenticity of host '172.16.1.17 (172.16.1.17)' can't be established.
RSA key fingerprint is 3a:99:7f:41:68:bd:3b:80:43:bb:8a:5c:62:73:1f:45.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.17' (RSA) to the list of known hosts.
Last login: Wed Jun 10 12:37:23 2015 from ::1
[hadoop@master ~]$ ssh master
sysconfig/       system-release
The authenticity of host 'master (172.16.1.17)' can't be established.
RSA key fingerprint is 3a:99:7f:41:68:bd:3b:80:43:bb:8a:5c:62:73:1f:45.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'master' (RSA) to the list of known hosts.
Last login: Wed Jun 10 12:38:37 2015 from 172.16.1.17

88bifa手机登入 1 

下面介绍Master用无密码验证的方式的SSH登陆Slave

88bifa手机登入 2 

1.首先在Slave上创建用户hadoop,并设置密码

88bifa手机登入 3

-bash-4.1# useradd hadoop
-bash-4.1# ls -l /home
总用量 8
drwx------ 2 hadoop hadoop 4096 6月  10 12:58 hadoop
drwx------ 2 xc     xc     4096 7月   9 2013 xc
-bash-4.1# passwd hadoop
更改用户 hadoop 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

 

2.切换到Master,并将Master上的公钥scp到Slave节点的Hadoop用户上

88bifa手机登入 4 

[hadoop@master ~]$ scp ~/.ssh/id_rsa.pub hadoop@slave2:~/
The authenticity of host 'slave2 (172.16.1.20)' can't be established.
RSA key fingerprint is 67:22:ba:43:ad:fe:a2:d4:ad:43:26:4b:71:d0:54:af.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave2,172.16.1.20' (RSA) to the list of known hosts.
hadoop@slave2's password:
id_rsa.pub                                                         100%  395     0.4KB/s   00:00
[hadoop@master ~]$

然后我们在Master,Slave机上分别用root用户建一个hadoop用户,并设置密码,注意用户名,密码保持一致。 

  • 1

88bifa手机登入 5 

3.拷贝完后到Slave节点上,公钥追加授权文件,并修改权限

然后,登入hadoop用户,执行以下命令,生成密钥对,并把公钥文件写入授权文件中,并赋值权限, 
    ssh-keygen –t rsa –P ” 
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
  chmod 600 ~/.ssh/authorized_keys 
最后切换root用户,配置sshd,取消被注释的公钥字段, 
    RSAAuthentication yes # 启用 RSA 认证 
    PubkeyAuthentication yes # 启用公钥私钥配对认证方式 
    AuthorizedKeysFile .ssh/authorized_keys #
公钥文件路径(和上面生成的文件同) 
并保存设置,然后重启sshd,即可测试本机的SSH,如下图所示。 

[hadoop@master ~]$ ssh hadoop@slave2
hadoop@slave2's password:
[hadoop@slave2 ~]$ ls
id_rsa.pub
[hadoop@slave2 ~]$ mkdir ~/.ssh
[hadoop@slave2 ~]$ chmod 700 ~/.ssh/
[hadoop@slave2 ~]$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@slave2 ~]$ chmod 600 ~/.ssh/authorized_keys
[hadoop@slave2 ~]$

88bifa手机登入 6 

4.然后切换至root用,修改sshd配置,并重启sshd服务。
1)在/etc/sys下添加下面两行代码

88bifa手机登入 7 

sysconfig/      system-release
sysctl.conf     system-release-cpe

88bifa手机登入 8 

2)然后修改 /etc/ssh/sshd_config文件,将下面三行注释(#)取消掉)

88bifa手机登入 9 

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

至此,我们本机的SSH已经配置完毕,下面给出SSH登陆本机图

3)重启sshd服务

88bifa手机登入 10 

service sshd restart

在上图中,我们可以看出,无论使用localhost,还是IP地址,或者是主机名,我们都可以顺利的进行本机的无验证登陆。 

5.回到Master下进行测试,发现可以不用输入密码,便可以ssh到Slave节点的Hadoop用户上。

下面,散仙进行把Master的公钥文件通过scp拷贝到已经创建好的Slave节点的hadoop用户上,需要注意的是,在这个用户上不一定有.ssh文件夹,如果没有的话,也没关系,创建一个.ssh文件夹,并赋予700的管理权限,最后将公钥追加到授权文件中,并赋予600的权限,这两步比较重要,切记! 

[hadoop@master ~]$ ssh hadoop@slave2
Last login: Wed Jun 10 13:09:53 2015 from 172.16.1.17
[hadoop@slave2 ~]$

88bifa手机登入 11 

SSH服务远程访问Linux服务器登陆慢
http://www.linuxidc.com/Linux/2011-08/39742.htm

拷贝完成之后,去Slave机上进行,公钥追加授权文件,并赋值权限,然后切换root用户,进行sshd配置,并重启ssh服务,步骤,如Master机的配置。

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

 
88bifa手机登入 12 

88bifa手机登入,开启SSH服务让Android手机远程访问
Ubuntu 14.04 
http://www.linuxidc.com/Linux/2014-09/106809.htm

88bifa手机登入 13 

如何为Linux系统中的SSH添加双重认证
http://www.linuxidc.com/Linux/2014-08/105998.htm

然后,回到Master机的hadoop用户上,进行测试 

在 Linux 中为非 SSH 用户配置 SFTP 环境
http://www.linuxidc.com/Linux/2014-08/105865.htm

88bifa手机登入 14 

Linux 上SSH 服务的配置和管理
http://www.linuxidc.com/Linux/2014-06/103627.htm

88bifa手机登入 15 

SSH入门学习基础教程
http://www.linuxidc.com/Linux/2014-06/103008.htm

我们发现此时,已经不需要密码验证了。当然现在只是单向登陆从Master到Slave的可以,如果从Slave到Master的你会发现不行,这个是正常的,想要双向登陆,必须得两台机器互相认证彼此的公钥文件,以此类推无论是你有多少台节点,只要机器双方之间有认证,就可以任意实现无验证登陆,当然在我们实际的生产环境中,只考虑有意义的认证,下面散仙在Slave节点下的hadoop用户里,生成自己的公钥文件,并用scp拷贝到Master上,然后将公钥追加的授权文件中,以此实现双向认证。 

SSH免密码登录详解 
http://www.linuxidc.com/Linux/2015-03/114709.htm

Slave机上的hadoop用户生成密钥对 

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

88bifa手机登入 16 

88bifa手机登入 17

Slave机上拷贝公钥到Master机上的hadoop用户上 

88bifa手机登入 18 

然后与上面相同的方式追加到授权文件authorized_keys里面。然后就大功搞成了,散仙给出截图证明双向无验证登陆。 
Master机上hadoop用户的双向认证 

88bifa手机登入 19 

Slave机上hadoop用户的双向认证 

88bifa手机登入 20 

至此,我们的双向无登陆验证,已经搞定了,对于多节点的,也是这个道理,只有节点之间都有相互的公钥认证,就可以双向认证了,如果是单向管理的,只需要配置一方的公钥就可以了,当然,在实际的环境中,大部分都是单向的。这个我们要根据实际的情况来处理。

下面关于SSH相关的文章您也可能喜欢,不妨参考下:

Ubuntu 下配置
SSH服务全过程及问题解决
http://www.linuxidc.com/Linux/2011-09/42775.htm

Ubuntu 14.04 下安装Samba 及SSH 服务端的方法
http://www.linuxidc.com/Linux/2015-01/111971.htm

SSH服务远程访问Linux服务器登陆慢
http://www.linuxidc.com/Linux/2011-08/39742.htm

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

开启SSH服务让Android手机远程访问
Ubuntu 14.04 
http://www.linuxidc.com/Linux/2014-09/106809.htm

如何为Linux系统中的SSH添加双重认证
http://www.linuxidc.com/Linux/2014-08/105998.htm

在 Linux 中为非 SSH 用户配置 SFTP 环境
http://www.linuxidc.com/Linux/2014-08/105865.htm

Linux 上SSH 服务的配置和管理
http://www.linuxidc.com/Linux/2014-06/103627.htm

更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-06/132219.htm

88bifa手机登入 21