热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Hadoop框架起步之图解SSH、免密登录原理和实现方法

这篇文章主要介绍了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所示,我们可以发现问题的关键点就在于客户机没法分辨出公钥是否是自己想要登录的服务器给的公钥,所以说客户机只能自己对公钥进行确认,通常第一次登录的时候会出现下面的提示。

1 The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
2 RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
3 Are you sure you want to continue connecting (yes/no)?

提示的内容是在说,无法确定ssh-server.example.com (12.18.429.21)主机的真实性,但是知道其公钥指纹,是否继续连接。

之所以使用公钥指纹,是因为RSA算法生成的公钥长达1024位,但是通过对公钥进行hash得到的128位的指纹就很容易进行比较。

输入yes之后,会出现下面的提示。

1 Warning: Permanently added 'ssh-server.example.com,12.18.429.21' (RSA) to the list of known hosts.
2 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以及免密登录能有更好的了解。

这篇博客由于工作的原因,前前后后写了个把星期,真的很不容易,虽然文中的原理很多是通过学习大佬的文章才会的,但是这篇博客中的每个字我都可以负责任的说是我自己一个一个敲的,所有的图都是我自己用processOn画的,如果你有什么问题,可以在博客下留言,我有时间会回复的。

以上所述是小编给大家介绍的Hadoop框架起步之图解SSH、免密登录原理和实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!


推荐阅读
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • Linux 防火墙与端口管理必备命令
    在使用 Linux 系统进行服务部署和问题排查时,防火墙和端口管理是不可或缺的操作。本文将详细介绍如何查看防火墙状态、端口占用情况,以及如何开放和关闭端口,帮助初学者更好地掌握这些技能。 ... [详细]
  • 面试题总结_2019年全网最热门的123个Java并发面试题总结
    面试题总结_2019年全网最热门的123个Java并发面试题总结 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • 本文详细介绍如何在忘记MySQL服务器密码的情况下进行密码重置,包括具体的步骤和注意事项。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • FreeBSD环境下PHP GD库安装问题的详细解决方案
    在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ... [详细]
author-avatar
革启兵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有