SSH免密登录探究

早些时候,在J客户处见到的是,通过堡垒机统一授权后,免密登录到目标主机,root的密码定期修改为随机密码。而目前工作的公司还是比较传统的基于密码的登录方式,带来几个问题:

1、密码是固定的,知道内部规章的人都能够轻松访问具体的目标主机

2、不能实现定期修改密码

3、用户需要用,申请了root密码之后,没有回收机制

在如今合规、安全性越来越严格的情况下,操作系统加固都需要解决这类问题。Linux的认证更多选择了publickey的方式认证,即我们说的免密登录。

实现了免密登录,对生产运维带来怎么样的好处,小编认为有如下几点:

1、安全合规,保证生产安全的前提下,也满足监管的诉求。

2、批量管理,实现了免密登录,那么批量下发文件,脚本,监控等都能够进一步的进行。(基于agent的管理方式,也能实现批量管理,但那是另外的实现方式,后续有机会会讨论,本文不过多讨论)

背景知识

非对称加密技术。加密的原理为对明文信息,使用算法+密钥封装为密文信息。非对称加密技术,指通信双方均拥有各自的公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。通信双方都公开自己的公钥信息,信息发送方用接收方的公钥加密信息,接收方接收到之后,使用自己的私钥进行解密,获取信息。这样很好的解决了密钥的传递,不用担心在传递过程中密钥被截获,因为我传递的本来就是公开的密钥信息。RAS(Rivest Shamir Adleman)是非对称加密技术的典型算法,

下面结合SSH免密登录来看一下非对称加密算法的主要应用。

SSH处理主要分为四步:

协议协商阶段

服务端开启SSH服务器(端口,监听等),客户端发TCP请求后,协商协议 的版本,只有双方版本一致才能够同学

服务器认证阶段

客户端认证阶段

数据传输阶段

链接完成之后,通过sessionkey加密,保证传输的安全性。

接下来看看一下第二、散步,服务器认证和客户端认证阶段:

服务端认证——会话密钥(session key)生成

1.客户端请求连接服务器,服务器将As发送给客户端。

2.服务器生成会话ID(session id),设为p,发送给客户端。

3.客户端生成会话密钥(session key),设为q,并计算r =p xor q。

4.客户端将r用As进行加密,结果发送给服务器。

5.服务器用Bs进行解密,获得r。

6.服务器进行r xor p的运算,获得q。

.至此服务器和客户端都知道了会话密钥q,以后的传输都将被q加密。

认证

1.服务器生成随机数x,并用Ac加密后生成结果S(x),发送给客户端

2.客户端使用Bc解密S(x)得到x

3.客户端计算q +x的md5值n(q+x),q为上一步得到的会话密钥

4.服务器计算q +x的md5值m(q+x)

5.客户端将n(q+x)发送给服务器6.服务器比较m(q+x)和n(q+x),两者相同则认证成功

注:

1、为避免SessionKey的泄漏,SSH还采取了其他安全措施,Session Key仅保存在内存避免其泄漏;周期性更换Server Key,默认为1小时(SSH2对Server Key安全进一步增强)。

2、上诉流程是使用publickey的方式进行验证的,如果是使用password的方式,在完成了服务端认证后,客户端之间发送用户名密码即可完成登录。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180418G0V6QV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券