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

一、为何要进行 SSH 无密码验证配置?java

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

 

二、为何要使用 SSH?算法

  在linux系统中,ssh是远程登陆的默认工具,由于该工具的协议使用了RSA/DSA的加密算法.该工具作linux系统的远程管理是很是安全的。telnet,由于其不安全性,在linux系统中被搁置使用了。安全

 

三、SSH 原理服务器

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

  

 

 四、配置过程ssh

  咱们这里有三台机器,分别是:工具

  hostname                ipaddress                subnet mask                  geteway    oop

一、 master     192.168.146.200    255.255.255.0      192.168.146.2加密

二、 slave1      192.168.146.201    255.255.255.0      192.168.146.2

三、 slave2      192.168.146.202    255.255.255.0      192.168.146.2

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

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

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

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

  咱们须要两个服务,ssh和rsync。能够经过下面命令查看结果显示以下:

rpm –qa | grep openssh
rpm –qa | grep rsync

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

  

  若是没有安装 ssh 和 rsync,则经过下面的命令安装

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

  要确保全部的机器都安装 SSH

 

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

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

ssh-keygen –t rsa –P ''

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

   

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

  

 

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

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

  

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

   权限的设置很是重要,由于不安全的设置安全设置,会让你不能使用RSA功能,即在进行登陆时仍然要求你输入密码。

chmod 600 ~/.ssh/authorized_keys

  

 

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

   注意这里要用 root 用户登陆,否则没有权限修改。

vi /etc/ssh/sshd_config 

  

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

  RSAAuthentication yes # 启用 RSA 认证
  PubkeyAuthentication yes # 启用公钥私钥配对认证方式
  AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

  

第六步:重启服务

service sshd restart

  

 

第七步:把公钥复制全部的 slave 机器上

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无密码远程登陆失败。

mkdir ~/.ssh      //建立 .ssh 的文件夹
chmod 700 ~/.ssh    //给 .ssh 文件夹权限

  

 

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

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm -rf ~/id_rsa.pub

  

 

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

vi /etc/ssh/sshd_config 
service sshd restart

  

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

ssh 远程服务器IP

 

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

所以剩下的咱们就是重复的操做,将 master 的公钥发送给 slave2,等等。

 

若是咱们想直接 ssh 主机名 登陆,那么咱们须要配置主机和 ip 地址的映射关系。

vi /etc/hosts

  

 

 

注意:咱们可使用命令

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

那么这条命令的意思是:

a) 先scp 将本机的id_rsa.pub复制到对方机器的.ssh目录下

b) 在对方机器上执行 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 导入公钥

这样写咱们能够省略不少步骤。  

注意:若是第一次使用该命令时,咱们要先在 机器上建立 .ssh 的文件夹,而且赋予 700 的权限。

 

设置用 SSH 别名 登陆

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

在其中增长:

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

完成后便可用  ssh host 来登陆主机,而不须要输入IP地址

相关文章
相关标签/搜索