配置SSH无登陆验证,在很多场景下是非常方便的,尤其是在管理大型集群服务时,避免了繁琐的密码验证,在安全级别越高的服务器上,通常密码的设置更复杂,配置SSH,不仅可以用密钥保证节点间通信的安全性,同时也降低了频繁输入密码登陆的耗时,大大提高了管理效率。散仙写此篇文章,也是给准备入手Hadoop的道友们先做好一个基础的准备,当然你也可以不配置SSH,只要你愿意频繁输入Slave节点的密码来登陆。
1. SSH无密码验证的原理
Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。
2.SSH无密码登陆的几种关系
通常情况下,一个集群服务下至少有一个Master和若干个Slave
,那么无密码登陆通常指的是由Master到任意一个Slave的无验证的单向登陆,意思就是只能从Master登陆到Slave是不需要密码的,但是如果你想从Slave无验证登陆到Master,或者你想在Slave与Slave之间进行无验证登陆,这些都是不可行的,除非,你进行了密钥对的双向验证,才可以双向登陆,我们在这里先不去议论相互之间登陆有没有意义,可能某些情况下或许需要这些方式。
节点名 | IP地址 | Master | 10.2.143.5 | Slave | 10.2.143.36 |
下面开始步入正题,散仙使用的是CentOS6.4版本的,配置的是2个节点之间的双向的SSH无验证登陆,其他几种系统的也大同小异,我们首先使用root用户登陆,在network中修改机器名,并在hosts文件中添加映射信息,然后执行保存退出,Slave机按同样方法配置,具体操作见下图
然后我们在Master,Slave机上分别用root用户建一个hadoop用户,并设置密码,注意用户名,密码保持一致。
然后,登入hadoop用户,执行以下命令,生成密钥对,并把公钥文件写入授权文件中,并赋值权限,
ssh-keygen –t rsa –P ''
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
最后切换root用户,配置sshd,取消被注释的公钥字段,
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
并保存设置,然后重启sshd,即可测试本机的SSH,如下图所示。
至此,我们本机的SSH已经配置完毕,下面给出SSH登陆本机图
在上图中,我们可以看出,无论使用localhost,还是IP地址,或者是主机名,我们都可以顺利的进行本机的无验证登陆。
下面,散仙进行把Master的公钥文件通过scp拷贝到已经创建好的Slave节点的hadoop用户上,需要注意的是,在这个用户上不一定有.ssh文件夹,如果没有的话,也没关系,创建一个.ssh文件夹,并赋予700的管理权限,最后将公钥追加到授权文件中,并赋予600的权限,这两步比较重要,切记!
拷贝完成之后,去Slave机上进行,公钥追加授权文件,并赋值权限,然后切换root用户,进行sshd配置,并重启ssh服务,步骤,如Master机的配置。
然后,回到Master机的hadoop用户上,进行测试
我们发现此时,已经不需要密码验证了。当然现在只是单向登陆从Master到Slave的可以,如果从Slave到Master的你会发现不行,这个是正常的,想要双向登陆,必须得两台机器互相认证彼此的公钥文件,以此类推无论是你有多少台节点,只要机器双方之间有认证,就可以任意实现无验证登陆,当然在我们实际的生产环境中,只考虑有意义的认证,下面散仙在Slave节点下的hadoop用户里,生成自己的公钥文件,并用scp拷贝到Master上,然后将公钥追加的授权文件中,以此实现双向认证。
Slave机上的hadoop用户生成密钥对
Slave机上拷贝公钥到Master机上的hadoop用户上
然后与上面相同的方式追加到授权文件authorized_keys里面。然后就大功搞成了,散仙给出截图证明双向无验证登陆。
Master机上hadoop用户的双向认证
Slave机上hadoop用户的双向认证
至此,我们的双向无登陆验证,已经搞定了,对于多节点的,也是这个道理,只有节点之间都有相互的公钥认证,就可以双向认证了,如果是单向管理的,只需要配置一方的公钥就可以了,当然,在实际的环境中,大部分都是单向的。这个我们要根据实际的情况来处理。
相关推荐
越来越多的小伙伴们使用远程登录,而ssh安全性无疑是很高的,那么我们现在来看看如何实现ssh无密码验证配置。 一. 准备工作 首先要确保你的linux系统中已经安装了ssh,对于ubuntu系统一般默认只安装了ssh client,...
### Linux系统的SSH免密码登录机制原理及实现范例 #### 一、SSH免密码登录机制原理 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。它可以在不安全的网络上提供一种安全的远程登录方法。对于经常...
在Hadoop这样的分布式计算环境中,SSH无密码登录配置至关重要,因为它简化了节点间的通信,提高了运维效率。以下是关于SSH无密码登录配置的详细解释。 **一、SSH原理** SSH通过加密网络数据流,确保在非安全网络上...
在这个例子中,我们将探讨如何使用Java实现SSH2的用户名密码验证,并结合MySQL数据库进行用户身份验证。 首先,我们需要了解SSH2认证的基本原理。SSH2的认证过程通常包括两个主要步骤:密钥交换和身份验证。密钥...
SSH 工作原理及流程 SSH(Secure Shell)是一种安全的网络协议,用于提供安全的远程访问和文件传输。SSH 协议具有广泛的应用场景,如远程登录、文件传输、网络管理等。下面是 SSH 工作原理及流程的详细说明: 一、...
### SSH免密码登录详解 #### 一、简介 在日常运维工作中,经常需要在多台服务器之间进行频繁的SSH连接操作。为了提高工作效率并减少密码输入的...希望本篇文章能帮助读者理解SSH免密码登录的工作原理及其实现方法。
SSH无密码登录是一种通过验证密钥对(公钥和私钥)来进行远程服务器认证的机制。其工作原理是公钥可以被上传到服务器,而私钥则保存在本地的客户端。当进行SSH连接时,客户端会向服务器提供其私钥,服务器利用存储的...
Linux系统SSH无密码登录设置手册 1. 引言 ...总结,通过理解SSH的工作原理并按照上述步骤配置,可以实现Linux系统之间的安全无密码登录。在享受便利的同时,不要忘记加强安全措施,防止未经授权的访问。
Linux系统SSH(Secure Shell)无密码登录是一种便捷且安全的远程访问方式,它允许用户在无需每次输入密码的情况下,通过网络连接到Linux服务器。这种方式基于公钥加密技术,可以提高工作效率,减少人为错误,尤其在...
TelnetUtil.java和SshUtil.java可能是两个Java工具类,分别封装了telnet和SSH的连接和验证逻辑。它们可能包含以下功能: - 连接远程服务器:通过Socket或JSch库(SSH支持)建立连接。 - 发送用户名和密码:使用...
SSH2支持多种身份验证方法,包括基于密码、公钥/私钥对和键盘交互式认证。公钥认证是最常用且最安全的方式,它涉及到用户在远程主机上存储公钥,而私钥则保留在本地。当用户尝试连接时,服务器会使用公钥加密一个...
小米路由器青春版SSH密码计算器的工作原理可能涉及到基于特定算法的哈希计算,该算法可能与路由器固件中存储的密码哈希相对应。用户需要提供路由器的SN号(Serial Number),这是每个设备独有的标识符。SN号通常可以...
首先,我们要理解SSH免密码登录的基本原理。这依赖于SSH密钥对,即一个公钥和一个私钥。公钥存储在远程服务器上,而私钥保留在本地机器上。当本地机器尝试连接到远程服务器时,SSH服务会使用公钥对传输的数据进行...
#### 三、实现无密码登录原理 SSH无密码登录是基于公钥认证机制实现的,主要流程如下: 1. **生成密钥对**:在客户端生成一对公钥和私钥。 2. **公钥传输**:将客户端的公钥复制到服务端特定目录下。 3. **验证...
#### SSH无密码登录原理 SSH(Secure Shell)是一种加密的网络协议,用于计算机之间的通信。SSH无密码登录主要依赖于公钥加密技术:客户端生成一对密钥(公钥和私钥),将公钥复制到远程服务器上;当用户通过SSH...
在本套“SSH登录验证系统”中,我们将深入探讨SSH的原理、配置以及如何构建一个安全的登录管理系统。 首先,SSH的核心功能是提供加密的网络通信,包括命令行接口的远程控制和文件传输。它通过公钥基础设施(PKI)...
通过`ssh-copy-id`命令,可以将本地的公钥复制到远程服务器,实现无密码登录。 5. **其他相关技术** 提供的PPT文件列表中包含的是关于Struts、Hibernate和Spring的讲解,虽然与SSH主题不直接相关,但这些都是Java ...
存储和验证:将SSHA哈希存储在数据库中,当用户登录时,按照同样的方式计算哈希,与存储的哈希值比较以验证密码。 4. **LDAP-SHA加密**: LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问...