SSH协议

SSH

ssh是Secure Shell的简写形式,可以进行数据的加密传输,以抑制中间人攻击,
还可以防止dns和ip欺骗。ssh传输的数据是压缩的,所以传输数据较快,可代替Telnet,有可以为FTP,Pop和ppp提供安全通道。

SSH框架

主要分三个协议

*传输层协议(The Transport Layer Protocol)提供数据机密,信息完整等支持

*用户认证协议(The User Authentication Protocol)提供客户端的身份鉴定。

*连接协议(The ConnectionProtocol) 信息隧道复用成逻辑通道,为更高层应用协议使用,高层应用协议可以相对独立于SSH 的体系之外,依靠这个框架,通过连接协议使用SSH 的安全机制。SSH协议还可为许多网络安全应用协议提供扩展的支持

      各种SSH高层网络安全应用协议


             连接协议
             用户认证协议
             传输层协议
     [服务器认证][数据机密性][信息完整]

主机密匙机制
SSH远程登陆密匙验证授权机制

客户端

ssh提供两种级别的安全验证
1.基于口令的安全验证
 即在你每次登陆时需要你提供口令,也就是用户名和密码,但安全性低,容易遭受中间人攻击,冒充你想要连接的主机盗取你的口令
2.基于密匙的安全验证
   需要一对公私匙,把公匙给你要连接的服务器,连接时,服务器向你发送一个使用这个公匙的字符串,你使用私匙解密再发送回去,如果两个字符串一样,说明认可客户端,不会出现中间人盗取。

主机A远程登陆主机B

1.在主机A上生成一个公私匙对,把这个公私匙对放在/root/.ssh/id_dsa目录中,在使用SSH时,ssh会默认去主机的这个目录查找私匙

ssh-keygen -t dsa -P '' -f /root/.ssh/id_dsa
  1. 将主机A的公钥发送给主机B
 scp -r /root/.shh/id_dsa.pub B:~/

到这里A与B就建立了SSH通信

当A通过SSH机制远程登陆到B时

ssh root@B

执行上面的命令,B主机会去查看它的授权列表是否有root@A的公匙,如果有A的公匙,B就会随即生成一个字符串并用A的公匙对这个字符串进行加密,如果没有找到A的公匙,则使用口令登陆。

SSH的工作过程

服务器端和客户端要经历五个阶段

*版本号协商阶段

  SSH目前包括SSH11和SSH2两个版本,双方通过版本协商确定使用的版本。

*密匙和算法协商阶段

SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终的算法。

*认证阶段
客户端向服务器端发起认证,服务器端对客户端进行认证

  • 会话请求阶段
    认证通过后,客户端向服务器端发起会话请求

*交互会话阶段
进行信息交互

版本号协商阶段

客户端向服务器端发送TCP初始连接请求,建立TCP连接后,服务器向客户端发送一个报文:“SSH-<主协议版本号>-<次协议版本号>-<软件版本号>”,

  客户端收到报文后,解析该数据包,如果服务器端的版本协议号比自己低,且客户端支持低版本,就使用服务器的,否则使用自己的

  客户端回应给服务器一个报文,服务器比较客户端发来的版本号,决定。


 协商成功,进入密钥和算法协商阶段

密钥和算法协商阶段

服务器和客户端分别发送算法协商报文给对端,报文包含自己支持的公匙算法列表,加密算法列表,MAC算法列表,压缩算法列表等,

服务器和客户端根据本端支持的算法得出最终的算法

服务器和客户端利用DH交换算法,主机密钥对等参数,生成会话密钥和会话id

认证阶段

SSH提供两种认证方式
password认证,和publickey认证。

会话请求阶段

服务器等待客户端的请求,认证通过后,客户端向服务器发送请求

交互会话阶段

数据双向传送

客户端将要执行的命令加密后传给服务器;
服务器接受报文,解密后执行该命令,执行结果加密发还给客户端,
客户端收到结果解密显示在终端。

简单描述一下SSH运行的过程

*客户端向服务器端发起SSH连接请求
*服务器端向客户端发起版本协商号。
*协商结束后服务器端发送Host Key公匙,随机数等信息,这里的通信是不加密的。
*客户端返回确认信息,同时附带用公匙加密的一个随机数,用于双方计算Session Key。

*进入认证阶段,这里以后通信加密
*认证成功,进入交互阶段。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值