Hadoop起步之图解SSH、免密登录原理和实现
1. 前言
emmm….最近学习大数据,需要搭建Hadoop框架,当弄好linux系统之后,第一件事就是SSH免密登录的设置。对于SSH,我觉得使用过linux系统的程序员应该并不陌生。可是吧,用起来简单,真让你说出个所以然,还是件比较困难的事(大佬绕路,此篇文章不属于你~)。然后,我就好奇心大发,打算写一篇博客详细介绍一下SSH和免密登录的原理及实现。
补充:不管是Hadoop的伪分布还是全分布,Hadoop的名称结点(NameNode)都需要启动集群中所有机器的Hadoop守护进程,而这个过程可以通过SSH登录来实现。由于Hadoop并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录每台机器,就需要对其进行SSH的免密登录配置。
2. 初见SSH
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可以在不安全的网络中为网络服务提供安全的传输环境(来自维基百科的定义)。根据其定义,我们能够理解SSH最常见的用途就是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
早期的互联网通信,例如Telnet和非安全shell,都是采用明文进行传输,一旦被截获,内容就会暴露无遗。而SSH就是其上位的替代品。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为了互联网安全的一个基本解决方案,迅速在全世界获得推广。
这里需要注意一下,SSH只是一种协议(或者可以理解为一种规定),而它具体的实现有很多,商业,开源的等等。其最流行的实现应该是OpenSSH,本文所针对的实现也是基于OpenSSH的。
3. SSH的工作原理
作为以安全性著称的协议,SSH是怎么实现的呢?我们首先想到的肯定是对数据进行加密,而SSH的加密方式主要有两种,一个是对称加密(密钥加密),另一个是非对称加密(公钥加密)。
3.1 对称加密
所谓的对称加密就是客户端与服务器共用一套密钥进行数据的加解密,详情见下图。

图3-1 对称加密的过程
这种加密方式很难被破解,但是存在一个问题,如果密钥泄露,系统数据的安全性将不复存在,为了解决这个问题,非对称加密应运而生。
3.2 非对称加密
非对称加密有两个密钥:公钥和私钥。数据使用公钥加密之后,只能使用私钥进行解密,而私钥被破解的概率很低很低,详情见下图。

图3-2 非对称加密的过程
由于私钥是服务器独有的,所以即使客户机的登录信息被截取,也是没有私钥进行解密的,保证了数据的安全性,充分利用了非对称加密的特点。
3.3 非对称加密的缺陷
非对称加密就一定安全了么?答案是否定的。如果黑客冒充了服务器,拦截了登录请求,并且把自己的公钥发送给客户机,再使用自己的私钥对密码进行解密,就会获取到客户机的登录信息,从而造成数据泄露,这就是中间人攻击,详情见下图。

图3-3 非对称加密的缺陷
对于上诉的缺陷,SSH有两种解决方法,第一种是基于口令的认证;另一种是基于公钥的认证,俗称SSH免密登录。
3.4 基于口令的认证
根据图3-3所示,我们可以发现问题的关键点就在于客户机没法分辨出公钥是否是自己想要登录的服务器给的公钥,所以说客户机只能自己对公钥进行确认,通常第一次登录的时候会出现下面的提示。
The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?
提示的内容是在说,无法确定ssh-server.example.com (12.18.429.21)主机的真实性,但是知道其公钥指纹,是否继续连接。
之所以使用公钥指纹,是因为RSA算法生成的公钥长达1024位,但是通过对公钥进行hash得到的128位的指纹就很容易进行比较。
输入yes之后,会出现下面的提示。
Warning: Permanently added 'ssh-server.example.com,12.18.429.21' (RSA) to the list of known hosts.
Password: (enter password)
提示在说,该主机已经添加到known hosts的列表里了,接着输入密码,按照图3-2的流程走就行了。
4.基于公钥的认证
4.1 SSH免密登录的原理
免去密码进行登录,不仅使得登录信息不会遭到泄露,而且也简化、方便了系统之间登录的操作,提高了工作的效率,工作原理见下图所示。

图4-1 免密登录的原理
4.2 SSH免密登录的实现(openSSH)
第一步:安装SSH,命令如下。
yum install –y openssh-clients openssh-server
这里解释一下,一台机器既可以是客户机也可以是服务器,并且这两个角色是可以共存的。openssh-clients的功能类似于XShell,可以作为一个客户端连接上openssh-server。openssh-server的功能主要是作为一个服务(守护进程)运行在后台,如果这个服务开启了,我们就可以用一些远程连接工具来连接centos。由于我是用了Centos6.4的mimimal版本,该版本已经安装了openssh-server,但是却没有安装openssh-clients,所以我只需要安装openssh-clients即可,而具体安装情况请根据自己的系统决定。
第二步:生成密钥,命令如下。
ssh-keygen –t rsa –P ‘’ –f –/.ssh/id_rsa
ssh-keygen是用来生产密钥的工具。-t:指定生成密钥的类型(rsa、dsa、ecdsa等);-P:指定passphrase,用于确保私钥的安全;-f:指定存放密钥的文件(公钥和私钥默认放在相同目录下面,区别是,公钥的文件名有后缀.pub)
第三步:创建用于保存公钥的文件authorized_keys,并且把本机公钥添加到此文件,命令如下。
cat ~/.ssh/id_rsa.pub >> ~./ssh/authorized_keys
第四步:对authorized_keys文件进行授权操作,命令如下。
chmod 0600 ~/.ssh/authorized_keys
由于每个人使用系统的不同,文件默认的授权也是不相同的,如果不确定的话,可以执行上诉命令,对文件进行授权。
第五步:登录,命令如下。
ssh host
5. 总结和感言
emmm,SSH免密登录的使用还是挺常见的,也挺简单的。我觉得吧,凡事不能知其然而不知其所以然,这是我写这篇博客的目的。同时我也希望读者能够通过这篇博客对SSH以及免密登录能有更好的了解。
这篇博客由于工作的原因,前前后后写了个把星期,如果你有什么问题,可以在博客下留言,我有时间会回复的。
最后祝大家工作、学习越来越顺利。
Hadoop起步之图解SSH、免密登录原理和实现的更多相关文章
- linux上ssh免密登录原理及实现
因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录.关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理. scp 传输文件 scp( ...
- Hadoop真分布式实现SSH免密登录
首先需要两台服务器(CentOS安装Linux见:https://www.cnblogs.com/syq816/p/12355115.html) 伪分布式的搭建见:https://www.cnblog ...
- SSH免密登录详解
SSH免密登录详解 SSH(Security Shell)安全外壳协议,是较为可靠的,专为远程登录会话和其他网络服务提供安全保证的协议. 对于传统的网络服务程序(例如,FTP,Telnet等)来说 ...
- linux(十)配置ssh免密登录实现
知道ssh的朋友应该知道它是用来干什么的,如果你不知道什么是ssh远程登录的话,可以去看一下我的上一篇博客,关于linux的网络基础的知识.备注:ssh是用于远端登入.执行ssh指令开启终端机阶段作业 ...
- 配置ssh免密登录遇到的问题——使用VMware多虚拟机搭建Hadoop集群
搭建环境: 虚拟机 VMware12Pro 操作系统 centos6.8 hadoop 1.2.1 1.导入镜像文件,添加java环境 1.查看当前系统中安装的java,ls ...
- hadoop(八)集群namenode启动ssh免密登录(完全分布式五)|10
前置章节:hadoop集群配置同步(hadoop完全分布式四)|10 启动namenode之前: 1. 先查看有无节点启动,执行jps查看,有的话停掉 [shaozhiqi@hadoop102 ~]$ ...
- Hadoop伪分布式集群实现SSH免密登录
在启动Hadoop时候报了这样一个错误: Starting namenodes on [hadoop] hadoop: (Permission denied (publickey,gssapi-key ...
- 【Linux】ssh免密登录
一.ssh免密配置 ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例.有机器A(192.168.1.155),B(192.168. ...
- Ubuntu如何配置SSH免密登录
前言 在搭建hadoop集群时,需要主机和副机之间实现SSH免密登录 一.环境准备 1.ubuntu两台 二.安装SSH 1.首先检测一下本机有没有安装SSH服务,如果没有任何打印说明未安装 sudo ...
随机推荐
- Opencv中SVM样本训练、归类流程及实现
支持向量机(SVM)中最核心的是什么?个人理解就是前4个字--"支持向量",一旦在两类或多累样本集中定位到某些特定的点作为支持向量,就可以依据这些支持向量计算出来分类超平面,再依据 ...
- 参数方法(parameter)与非参数方法(nonparameter)
参数方法表示参数固定,不随数据点的变化而变化: 非参数方法并不意味着没有参数,而是说,参数的数目随数据点而变化, 1. 参数方法举例 logistic regression:p(y=1|x,α)=11 ...
- CefSharp For WPF自定义右键菜单栏
原文:CefSharp For WPF自定义右键菜单栏 初始化 <!--浏览器--> <cefSharpWPF:ChromiumWebBrowser Name="webBr ...
- TemplatePart用法说明
原文:TemplatePart用法说明 TemplatePart(Name="PART_Decrease", Type=typeof(RepeatButton)) 一直没明白这是干 ...
- Spring MVC 专题
Spring静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取.在Springboot中默认的静态资源路径有:classpath:/META-INF/resources/,c ...
- ng-alain 复用标签相关设置
排除复用 import { ReuseTabMatchMode, ReuseTabService } from '@delon/abc'; export class StartupService { ...
- WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)
原文:WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar) 本篇将开始介绍标签工具栏的开发内容,标签工具栏可以说是Ribbon 的核心部分,应用程序所有的功能特性都会集中 ...
- glibc_error reporting
很多GNU C库里的函数都会侦测并报告错误条件.我们的程序需要检测这些错误条件.比如:我们打开一个输入文件时需要判断该文件是否正确的打开.如果没有正确打开,我们需要打印错误或者采取其他正确的方式.为了 ...
- SDP开发平台试用版上线!提供源码!!!!
SDP开发平台提供试用版!! SDP软件快速开发平台是一套面向对象的应用软件快速开发平台. 1.SDP 设计端--页面设计 通过简单的拖拉控件,或者快速生成控件,可以在几分钟快速制作一个页面:如图 通 ...
- 图像滤镜艺术---流行艺术风滤镜特效PS实现
原文:图像滤镜艺术---流行艺术风滤镜特效PS实现 今天,本人给大家介绍一款新滤镜:流行艺术风效果,先看下效果吧! 原图 流行艺术风效果图 上面的这款滤镜效果是不是很赞,呵呵,按照本人以往的逻辑,我会 ...