什么是ssh协议?
SSH(Secure Shell)是建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登陆会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
SSH可以将所有的传输数据加密,这样“中间人”这种攻击方式就不可能实现了,而且也可以防止DNS和IP欺骗。还有一个额外的好处就是传输的数据经过压缩的,可以加快传输的速度。
下面我们来看一下 namenode跟各个datanode之间通过ssh远程登录时候的一些步骤跟原理,如下图:
如上图我们在weekend02上面敲 start-dfs.sh命令的时候,要3此输入密码才能进行登录到自己所在的datanode的服务器上,如果要登录到其他服务器,ssh + 指定ip地址,然后会有提示输入密码,我们输入密码就可以进行登录了,这种就是密码登录方式。
下面我们来讲解一下免密登录方式,就是ssh +ip(活着主机名字,但是要配置好主机名跟ip地址映射),就能够直接登录而不需要进行输入密码,这样子做的好处就是出去繁杂的密码登录,如果datanode的数量特别多的话,不类死个人勒!下面我们先来了解一下ssh协议的大概形式,如下图所示
(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