什么是SSH?
传统的网络服务程序,如FTP、Pop和Telnet在传输机制和实现原理上是没有考虑安全机制的,其本质上都是不安全的;由于它们在网络上用明文传送数据、用户账号和用户口令,别有用心的人经过窃听等网络攻击手段很是容易地就能够截获这些数据、用户账号和用户口令。并且,这些网络服务程序的简单安全验证方式也有其弱点,那就是很容易受到"中间人"(man-in-the-middle)这种攻击方式的攻击。所谓"中间人"的攻击方式,就是"中间人"冒充真正的服务器接收你的传给服务器的数据,而后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被"中间人"一转手作了手脚以后,就会出现很严重的问题。
SSH是英文Secure Shell的简写形式。经过使用SSH,你能够把全部传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,并且也可以防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是通过压缩的,因此能够加快传输的速度。web
SSH登陆时有两种验证方法
第一种:
基于密码的安全验证,它要求用户在每次登陆服务器时输入密码,服务器端验证经过后即登陆成功。
第二种:
基于密钥的安全验证,客户端的公钥会预先保存在服务器端,当登陆时,服务器端会使用该公钥作验证,若是验证成功,用户不需输入密码即完成登陆。为了不每次都输入密码这种重复性工做,咱们选择第二种方式进行远程登陆
SSH的原理
Linux中实现Hadoop各节点间的SSH免密登陆
实验节点为4个:shell
master1
master2
slave1
slave2
主节点1
主节点2
从节点1
从节点2
1.各节点生成公钥秘钥对
四个节点都要作一遍,中间一路回车,生成的公钥秘钥会在 /root/.ssh/ 路径下安全
[root@master1 ~]# ssh-keygen -t rsa
2.进入master1节点的 /root/.ssh/ 目录下
将master1公钥拷贝一份,命名为 authorized_keys服务器
[root@master1 ~]# cd .ssh/
[root@master1 .ssh]# cp id_rsa.pub authorized_keys
[root@master1 .ssh]# cat authorized_keys
此时,公钥已经保存在authorized_keys文件中了网络
3.将authorized_keys 复制到master2上
用 scp 命令复制 authorized_keys 到master2 的 /root/.ssh/目录下,中间须要确认输入密码ssh
[root@master1 .ssh]# scp authorized_keys master2:/root/.ssh/
4.切换至master2节点,将master2公钥保存在authorized_keys中
进入master2的 /root/.ssh/ 目录下,由于 authorized_keys 已经复制到msater2的/root/.ssh/目录下,因此,用cat追加内容至authorized_keys文件便可svg
[root@master2 ~]# cd .ssh/
[root@master2 .ssh]# cat id_rsa.pub >> authorized_keys
master2的公钥就保存在authorized_keys文件中了oop
5.重复第4步,将slave一、slave2节点的公钥保存至authorized_keys中
6.将slave2中的公钥保存至authorized_keys中后
将slave2中authorized_keys拷贝复制到master一、master二、slave1节点的/root/.ssh/目录下加密
[root@slave2 .ssh]# scp authorized_keys master1:/root/.ssh/
[root@slave2 .ssh]# scp authorized_keys master2:/root/.ssh/
[root@slave2 .ssh]# scp authorized_keys slave1:/root/.ssh/
7.至此,SSH免密登陆完成
[root@master1 ~]# ssh master2