设为首页 收藏本站
查看: 1702|回复: 0

[经验分享] Hadoop中ssh+IP、ssh+别名免秘钥登录配置

[复制链接]

尚未签到

发表于 2017-12-17 23:35:14 | 显示全部楼层 |阅读模式
  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上。
DSC0000.png

  4、配置过程
  我们这里有三台机器,分别是:
  hostname                ipaddress                subnet mask                  geteway    
  1、 master     192.168.146.200    255.255.255.0      192.168.146.2
  2、 slave1      192.168.146.201    255.255.255.0      192.168.146.2
  3、 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
DSC0001.png

  如果没有安装 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"目录下。
DSC0002.png

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

  第三步:把公钥>
  

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

  

DSC0004.png

  第四步:修改文件"authorized_keys"权限
  权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能,即在进行登录时仍然要求你输入密码。
  

chmod 600 ~/.ssh/authorized_keys  

  

DSC0005.png

  第五步:用root用户登录服务器修改SSH配置文件
  注意这里要用 root 用户登录,不然没有权限修改。
  

vi /etc/ssh/sshd_config  

  

DSC0006.png

  把文件中的下面几条信息的注释去掉: 
  RSAAuthentication yes # 启用 RSA 认证
  PubkeyAuthentication yes # 启用公钥私钥配对认证方式
  AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
DSC0007.png

  第六步:重启服务
  

service sshd restart  

  

DSC0008.png

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

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

  

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

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

  第八步:如果是第一次使用该命令,则需要在"/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 文件夹权限
  

  

DSC00011.png

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

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

DSC00012.png

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

vi /etc/ssh/sshd_config  
service sshd restart
  

  

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

ssh 远程服务器IP  

  

DSC00013.png

  注意看我们两个箭头,说明已经无密码登录到 slave1 机器上了。那么这样就算大功告成。
  因此剩下的我们就是重复的操作,将 master 的公钥发送给 slave2,等等。
  如果我们想直接 ssh 主机名 登录,那么我们需要配置主机和 ip 地址的映射关系。
  

vi /etc/hosts  

  

DSC00014.png

  注意:我们可以使用命令
  

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 文件(如果没有就新建)
DSC00015.png

  在其中增加:
DSC00016.png

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

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425199-1-1.html 上篇帖子: VMware 虚拟机安装 hadoop 2.6.0 完全分布式集群 下篇帖子: 二次排序问题(分别使用Hadoop和Spark实现)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表