SSH免密登录及在HADOOP集群中的应用 2

SSH免密登录


SSH协议简介

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。简单来说ssh是一种加密的用于远程登录的协议


SSH加密的方式

  • 对称加密
    假如计算机A要发送一段文字给计算机B,但是又不想让别人知道,最简单的办法就是,使用一大段密码进行加密,让别人不知道什么意思,这里术语就叫密钥,然后加密过后的文字通过网络发送给计算机B之后,计算机B为了读懂这段文字,这时B需要A的密钥进行解密,如下图:
    在这里插入图片描述

  • 非对称加密
    既然把密钥传输给别人不安全,那我们就要避免这个问题,首先计算机A和计算机B,分别拥有两个东西,叫做公钥和私钥,这两个东西有什么用呢,简单来说这两个东西是配套来使用的,一段文字通过公钥加密后,需要通过私钥解密才能看到,公钥就像锁,而私钥就像钥匙,现在计算机A拥有一把锁和钥匙,计算机B也拥有一把锁和钥匙,需要注意的是这两个东西是配套使用的,也就是只有自己的钥匙能开自己的锁。然后我们需要怎么做呢,原理很简单,计算机A和计算机B把自己的公钥复制一份,互相发送给对方,也就是`交换公钥,需要加密数据的时候就用对方的公钥加密,然后发送给对方,然后对方就用自己的密钥解密。如下图:
    在这里插入图片描述


SSH免密登录一: 笨但是较容易理解原理

在Hadoop集群中实现三台机器(bigdata01, bigdata02, bigdata03)的SSH免密登录
  • 原理:
    三个节点要实现互相免密登录,每个节点都需要有其他两个节点的公钥。

    如A要登录到B:

    • 首先A向B发送一个认证请求,
    • B收到请求后,使用A的公钥加密一个随机字符串发给A,
    • A使用自己的私钥对收到的加密串进行解密并把结果发给B,
    • B收到A的结果后与自己生成的字符串进行比对,如一致则允许登录

    示例图:
    在这里插入图片描述
    在这里插入图片描述

  • 思路:
    在这里插入图片描述

. ssh 文件夹下(~/.ssh)的文件功能解释:

tips: .ssh在用户名目录下(~/.ssh)噢, 下面的栗子都是在root用户下操作的, 所以.ssh均是在root目录下的哦, 要特别注意咯
在这里插入图片描述

  • 实现步骤:
  1. bigdata01首先实现自身的免密登录:
    a. 生成公钥和私钥(id_rsa, id_rsa.pub)
    ssh-keygen -t rsa  
    

在这里插入图片描述

b. 把公钥追加到authorized_keys(.ssh目录中没有则新建一个)中
 touch authorized_keys
 cat  id_rsa.pub >> authorized_keys      
  1. bigdata02 和 bigdata03按照步骤1方式分别生成各自的公钥和私钥,并分别把各自公钥发给主节点bigdata01

    注意: 由于每个节点生成的公钥名称都是 id_rsa.pub, 所以我们可以分别重命名后发送以方便区分

    a. 生成公钥:

     ssh-keygen -t rsa  
    

    b. 重命名公钥:

     mv id_rsa.pub id_rsa.pub id_rsa02.pub  
     mv id_rsa.pub id_rsa.pub id_rsa03.pub  
    

    c. 发送公钥:

     scp id_rsa02.pub  bigdata01:/root/.ssh  
     scp id_rsa03.pub  bigdata01:/root/.ssh
    

    也可以直接在bigdata01终端中直接获得bigdata02, bigdata03中的公钥在这里插入图片描述
    在这里插入图片描述

注意: 以上命令皆是在两个从节点Bigdata02, Bigdata03的shell上操作指令的一个合集。

  • 对于出现 ssh:Could not resovle hostname bigdata03: Name or Service not known的解决方法 :
    • 此为无法解析域名的错误,只需在hosts文件中添加一个映射即可
      在这里插入图片描述
  1. 在bigdata01的.ssh目录中把bigdata02,bigdata03的公钥分别加入到authorized_keys中:

     cat  id_rsa02.pub >> authorized_keys  
     cat  id_rsa03.pub >> authorized_keys
    

    在这里插入图片描述

  2. 把bigdata01中的authorized_keys发送到另外两个从节点中,即可实现三台主机的互相免密登录:

     scp authorized_keys bigdata02:/root/.ssh  
     scp authorized_keys bigdata03:/root/.ssh
    

在这里插入图片描述

  • scp同时发送多个文件到远程主机上的语法:

    	scp {文件a,文件b,文件c} 主机ip或域名:/xx/目录名  
    
  1. 验证:
    在这里插入图片描述
    输入ssh 别的主机名称, 除了第一次登陆出现上面的提示(因为新登陆主机, 尚未被记录到known_hosts中), 正常情况下应该是直接登录到另一台主机上.

拓展:

konwn_hosts的作用以及需要注意的地方:

ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,如果我们重新安装系统,其公钥信息还在,连接会出现如下图所示:

在这里插入图片描述

解决方法:

处理一
rm -rf ~/.ssh/known_hosts

++++++++++++++++++

  • 优点:干净利索

  • 缺点:把其他正确的公钥信息也删除,下次链接要全部重新经过认证

处理二
vi ~/.ssh/known_hosts
  • 删除对应ip的相关rsa信息(本例可知删除53行信息即可)

++++++++++++++++++

  • 优点:其他正确的公钥信息保留

  • 缺点:还要vi,还要找到对应信息,稍微优点繁琐

处理三

清除旧的公钥信息

ssh-keygen -R 192.168.0.100

++++++++++++++++++

  • 优点:快、稳、狠

  • 缺点:没有缺点

SSH免密登录实现方法二: ssh-copy-id

举个栗子即可:
ssh-copy-id 要实现免密的主机名/ip

在这里插入图片描述

参考资料:
https://www.cnblogs.com/xuziyu/p/10667997.html
https://www.cnblogs.com/cb0327/p/9244686.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值