什么是ssh协议?

SSH(Secure Shell)是建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登陆会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

SSH可以将所有的传输数据加密,这样“中间人”这种攻击方式就不可能实现了,而且也可以防止DNS和IP欺骗。还有一个额外的好处就是传输的数据经过压缩的,可以加快传输的速度。

下面我们来看一下 namenode跟各个datanode之间通过ssh远程登录时候的一些步骤跟原理,如下图:

hadoop设置免密登录 hadoop为什么要免密_服务器

如上图我们在weekend02上面敲 start-dfs.sh命令的时候,要3此输入密码才能进行登录到自己所在的datanode的服务器上,如果要登录到其他服务器,ssh + 指定ip地址,然后会有提示输入密码,我们输入密码就可以进行登录了,这种就是密码登录方式。

下面我们来讲解一下免密登录方式,就是ssh +ip(活着主机名字,但是要配置好主机名跟ip地址映射),就能够直接登录而不需要进行输入密码,这样子做的好处就是出去繁杂的密码登录,如果datanode的数量特别多的话,不类死个人勒!下面我们先来了解一下ssh协议的大概形式,如下图所示

hadoop设置免密登录 hadoop为什么要免密_服务器_02


(0)这里有A,B两台服务器,首先让A生成两个钥,一个是公钥,另一个是私钥

(1)A携带主机名和用户以及公钥访问公钥B

(2)B接收到A的请求后,把A的公钥去授权列表authorized_keys中核查看看有没有A的公钥,如果没有把A的公钥放进去然后用A的公钥加密一个随机字符串响应回去A

(3)这是A拿到改加密字符串解密成功后携带A的私钥返回给B,这时候B通过去授权列表验证,验证通过返回到A

(4)A就可以免密登录成功

具体操作:ssh-copy-id  + ip(或者主机名字)

(1)配置主机名字映射

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.10 hadoop01
192.168.2.11 hadoop02
192.168.2.12 hadoop03

(2)把公钥发送到要被免密的主机上去

[hadoop@hadoop01 .ssh]$ ssh-copy-id hadoop03

首次来的时候要输入密码登录,登录-输入密码-成功登录-exit-登录-成功!

[hadoop@hadoop01 .ssh]$ ssh hadoop03
The authenticity of host 'hadoop03 (192.168.2.12)' can't be established.
RSA key fingerprint is e9:52:1c:9d:5e:d1:60:f2:c3:15:64:c2:45:07:a6:68.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop03,192.168.2.12' (RSA) to the list of known hosts.
hadoop@hadoop03's password: 
Last login: Tue Aug 29 18:16:53 2017 from 192.168.2.1
[hadoop@hadoop03 ~]$ exiyt
-bash: exiyt: command not found
[hadoop@hadoop03 ~]$ exit
logout
Connection to hadoop03 closed.
[hadoop@hadoop01 .ssh]$ ssh-copy-id hadoop03
hadoop@hadoop03's password: 
Now try logging into the machine, with "ssh 'hadoop03'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

[hadoop@hadoop01 .ssh]$ ssh hadoop03
Last login: Tue Aug 29 20:09:44 2017 from 192.168.2.10