SSH协议理论讲解

目录

基本概念

SSH协议的组成

SSH工作原理

SSH版本协商阶段(确定V1版本或V2版本)

算法协商阶段

密钥交换阶段

用户认证阶段

会话交互阶段


基本概念

SSH(Secure Shell)安全外壳协议,是一种用于在不安全网络上进行安全远程登录和实现其他安全网络服务的协议(建立在应用层基础上的安全协议,TCP端口号22)

SSH协议的组成

SSH协议主要由三个组件组成

SSH传输层协议-主要进行SSH版本协商、算法协商、密钥交换

SSH传输层和TCP的传输层是不同的概念,SSH传输层是一个安全传输协议

SSH传输层通常建立在TCP/IP连接上,但是也可以在任何可靠的数据流上建立

SSH用户认证协议-主要用于用户认证

为服务器提供客户端的用户鉴别,使得服务器信任客户端

运行在SSH传输层协议之上

SSH连接协议-主要用于建立SSH会话连接

运行在SSH运输层协议和用户认证协议之上

SSH会话连接可以复用成若干个逻辑通道(包含TCP/IP转发通道、X11通道、交互式登录会话通道、远程执行命令通道)  用的比较多的是交互式登录会话

TCP/IP转发通道

Telent、SMTP、IMAP等其它基于TCP/IP的不安全协议就可以通过此通道变得安全

X11通道

11是X协议的版本,Linux底层协议就是X协议

X11主要用于登录Linux图形化界面时使用的,保证通信安全

交互式登录会话通道

程序进行远程执行时,保证其安全(程序可以是Shell、应用程序、系统命令或一些内置的子系统)  例如通过Python进行远程配置时就通过此通道保证安全

在Python中通过Paramiko库的SSHClient类中的incoker_shell()方法可以开启交互式登录会话通道

远程执行命令通道

Linux执行命令(查看目录等)时保障其安全

在Python中通过Paramiko库的SSHClient类中的exec_command()方法可以开启远程执行命令通道


SSH工作原理

为实现SSH的安全连接,服务器和客户端需要经历以下五个阶段

其中前三个阶段明文传输,后两个阶段密文传输

(以下介绍的SSH传输层协议是建立在TCP/IP连接上的)

SSH版本协商阶段(确定V1版本或V2版本)

会话交互阶段报文交互

SSH协商版本报文携带SSH版本号、次协议号、软件协议号

其中SSH版本号是必须携带的,此协议号和软件协议号可选

服务器如何协商SSH版本

服务器收到报文后,解析SSH版本号

如果客户端和服务器支持的版本号一致,则协商成功

如果客户端的SSH版本号比自己的低,且服务器能支持客户端的低版本,就使用客户端的协议号,协商成功;如果服务器不支持客户端的低版本,协商失败

如果客户端的SSH版本号比自己的高,则协商失败

不同版本的区别

SSH1没有对客户端的密钥进行校验,容易被植入恶意代码

SSH2增加了一个确认连接正确性的Diffe_Hellman机制,使得每次数据的传输,server都会检查数据来源的正确性,避免黑客入侵

并且SSH支持RSA和DSA密钥

算法协商阶段

确定密钥交换算法、公钥算法、对称加密算法、消息认证算法

算法类型

算法协商阶段的报文交互

服务器收到Client Key Exchange Init之后,根据客户端的算法查找自身的算法列表进行匹配

每种算法(密钥交换算法、公钥算法、加密算法、认证算法)都匹配成功才会进入下一阶段

服务器如何协商算法

服务器从客户端的算法列表取出第一个算法,在自己的算法列表中查找,如果协商成功,继续协商下一种算法;否则继续从客户端的算法列表中取出下一个算法进行协商

当服务器和客户端之间有多个相同的算法,则会根据算法的优先级选择优先级最高的算法

(例如:两边的认证算法都支持MD5和SHA,这个时候就会协商出一个优先级高的认证算法来使用)

密钥交换阶段

根据上阶段协商出来的密钥交换算法,动态产生会话密钥用于后续会话加密

密钥交换阶段报文交互

一般密钥交换算法使用DH算法,密钥交换过程类似IPsec的密钥交换过程

在密钥交换过程中私钥Xc,Xs始终是保密不传播的,由于DH算法的复杂其他用户即使获取了p,g,Yc,Ys也无法推断出私钥Xc,Xs,从而保证了会话密钥的安全性。

注意

密钥交换阶段产生的公私钥仅用于产生会话密钥,与后续用户认证无关

密钥交换阶段产生的公私钥在生成Session Key之后就会清除掉

密钥交换阶段完成后,后续所有报文交互均会被会话密钥Session Key加密

用户认证阶段

口令认证或公钥认证两种认证方式  报文被加密

口令认证方式

客户端通过用户名和密码登录到服务器,完成用户认证

每次认证都要输入用户名和密码

公钥认证方式

服务器通过客户端的公钥解密客户端发来的数字签名,完成用户认证(信任客户端)

会话交互阶段

进行报文交互   报文加密

  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静下心来敲木鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值