Hadoop中ssh+IP、ssh+别名免秘钥登录配置

简介:

1、为什么要进行 SSH 无密码验证配置?

Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。

2、为什么要使用 SSH?

在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法.该工具做linux系统的远程管理是非常安全的。telnet,因为其不安全性,在linux系统中被搁置使用了。

3、SSH 原理

Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。

4、配置过程

我们这里有三台机器,分别是:

hostname ipaddress subnet mask geteway

1、 master 192.168.146.200255.255.255.0192.168.146.2

2、 slave1  192.168.146.201255.255.255.0192.168.146.2

3、 slave2  192.168.146.202255.255.255.0192.168.146.2

那么我们想要的结果是在 master 机器上能不输入密码直接登录到 slave1 和 slave2 机器上。反之在 slave1 上能不输入密码登录到 master 和 slave2 机器上。

首先我们配置从 master 机器上不输入密码登录到 slave1 机器上。

注意:这几台机器我们都以 hadoop 用户登录进去。

第一步:确认系统已经安装了 SSH

我们需要两个服务,ssh和rsync。可以通过下面命令查看结果显示如下:

 
  1. rpm –qa | grep openssh 
  2. rpm –qa | grep rsync 

出现如下信息,则已经安装了SSH


如果没有安装 ssh 和 rsync,则通过下面的命令安装

 
  1. yum install ssh 安装SSH协议 
  2. yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件) 
  3. service sshd restart 启动服务 

要确保所有的机器都安装 SSH

第二步:master 机器上生成 秘钥对

在 master 机器上输入一下命令:

 
  1. ssh-keygen –t rsa –P '' 

这条命令是生成无密码秘钥对,rsa 是加密算法,-P '' 表示密码为空。询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。

查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。

第三步:把公钥 id_rsa.pub追加到授权的key里面去。

 
  1. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

第四步:修改文件"authorized_keys"权限

权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能,即在进行登录时仍然要求你输入密码。

 
  1. chmod 600 ~/.ssh/authorized_keys 

第五步:用root用户登录服务器修改SSH配置文件

注意这里要用 root 用户登录,不然没有权限修改。

 
  1. vi /etc/ssh/sshd_config 

把文件中的下面几条信息的注释去掉:

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

第六步:重启服务

 
  1. service sshd restart 

第七步:把公钥复制所有的 slave 机器上

 
  1. scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/ 

这里我们先复制到 slave1 机器上,IP 为 192.168.146.201

由上图可知,我们将文件 in_rsa.pub 文件传过去了,位置是 /home/hadoop。我们登录到 slave1 机器上查看这个文件

第八步:如果是第一次使用该命令,则需要在"/home/hadoop/"下创建".ssh"文件夹,并且修改该文件夹权限为 “700”

如果不进行,即使你按照前面的操作设置了"authorized_keys"权限,并配置了"/etc/ssh/sshd_config",还重启了sshd服务,在master能用"ssh localhost"进行无密码登录,但是对slave1进行登录仍然需要输入密码,就是因为".ssh"文件夹的权限设置不对。这个文件夹".ssh"在配置SSH无密码登录时系统自动生成时,权限自动为"700",如果是自己手动创建,它的组权限和其他权限都有,这样就会导致RSA无密码远程登录失败。

 
  1. mkdir ~/.ssh      //创建 .ssh 的文件夹 
  2. chmod 700 ~/.ssh    //给 .ssh 文件夹权限 

第九步:将 master 的公钥追加到 slave1 的授权文件 “authorized_keys” 中,并修改 该授权文件的权限,最后删除该公钥(保险起见)

 
  1. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 
  2. chmod 600 ~/.ssh/authorized_keys<br>rm -rf ~/id_rsa.pub 

第十步:在 slave1 机器上重复 第 五 、六 步操作。

 
  1. vi /etc/ssh/sshd_config 
  2. service sshd restart 

第十一步:验证,我们在 master 机器上使用 SSH 无密码登录 slave1 机器

 
  1. ssh 远程服务器IP 

注意看我们两个箭头,说明已经无密码登录到 slave1 机器上了。那么这样就算大功告成。

因此剩下的我们就是重复的操作,将 master 的公钥发送给 slave2,等等。

如果我们想直接 ssh 主机名 登录,那么我们需要配置主机和 ip 地址的映射关系。

 
  1. vi /etc/hosts 

注意:我们可以使用命令

 
  1. ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@对方机器IP (注意不要忘记了参数-i) 

那么这条命令的意思是:

 
  1. a) 先scp 将本机的id_rsa.pub复制到对方机器的.ssh目录下   
  2. b) 在对方机器上执行 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 导入公钥 

这样写我们可以省略很多步骤。

注意:如果第一次使用该命令时,我们要先在 机器上创建 .ssh 的文件夹,并且赋予 700 的权限。

设置用 SSH 别名 登录

用 hadoop 用户登录系统,在 /.ssh 目录下新建一个 config 文件(如果没有就新建)

在其中增加:

保存后退出,然后 设置 config 权限为 600

完成后即可用 ssh host 来登录主机,而不需要输入IP地址


本文作者:佚名

来源:51CTO

相关文章
|
28天前
|
JavaScript 应用服务中间件 Linux
【应用服务 App Service】解决无法从Azure门户SSH登录问题
【应用服务 App Service】解决无法从Azure门户SSH登录问题
|
16天前
|
分布式计算 Hadoop Devops
Hadoop集群配置https实战案例
本文提供了一个实战案例,详细介绍了如何在Hadoop集群中配置HTTPS,包括生成私钥和证书文件、配置keystore和truststore、修改hdfs-site.xml和ssl-client.xml文件,以及重启Hadoop集群的步骤,并提供了一些常见问题的故障排除方法。
27 3
Hadoop集群配置https实战案例
|
28天前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
27天前
|
安全 Shell Linux
如何禁止某个用户使用ssh登录
本文介绍了五种禁止用户通过SSH登录的方法:1) 修改`/etc/ssh/sshd_config`文件中的`DenyUsers`和`DenyGroups`来阻止特定用户或用户组登录;2) 将用户的默认shell设置为`/usr/sbin/nologin`或`/bin/false`以禁用其SSH访问;3) 利用PAM(可插入认证模块)通过编辑`/etc/security/sshd.conf`来限制登录权限;4) 通过编辑`/etc/hosts.deny`文件拒绝特定用户的SSH访问;5) 锁定或禁用用户账号以阻止所有类型的登录。每种方法都提供了详细的步骤指导。
61 1
|
30天前
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
34 0
Github代码仓库SSH配置流程
|
20天前
|
XML 分布式计算 监控
详细指南:在Hadoop中配置Oozie作业
【8月更文挑战第31天】
25 0
|
22天前
|
网络安全 Windows
在Windows电脑上启动并配置SSH服务
在Windows电脑上启动并配置SSH服务
44 0
|
30天前
|
Ubuntu Shell 网络安全
【Ubuntu】配置SSH
【Ubuntu】配置SSH
40 0
|
网络安全