抓包分析ssh远程主机为何变慢了?

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 在使用spug自动化部署程序的时候,会使用ssh协议远程执行脚本,但是ssh那一步会耗时比较旧,网上的解决方案五花八门. 问题可能可以解决,但是背后原理并不清楚,借此机会抓包将此问题彻底消化.

背景

在使用spug自动化部署程序的时候,会使用ssh协议远程执行脚本,但是ssh那一步会耗时比较旧,网上的解决方案五花八门. 问题可能可以解决,但是背后原理并不清楚,借此机会抓包将此问题彻底消化.

SSH协议握手过程

ssh 抓包MAC层包传输

序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。


确认应答号:指下一次「期望」收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。用来解决丢包的问题。


控制位:

ACK:该位为 1 时,「确认应答」的字段变为有效,TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1 。

RST:该位为 1 时,表示 TCP 连接中出现异常必须强制断开连接。

SYN:该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。

FIN:该位为 1 时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换 FIN 位为 1 的 TCP 段。

tcp握手抓包解释

89814d04e2ad4879b546ef59c522f3f6.png

No 描述 Seq Win ACK 解释
214 第一次握手 0 14600 \ seq = 0表示客户端当前的TCP包序列号
215 第二次握手 0 14480 1 seq = 0,表示服务器端当前的TCP包序列号ack = 1(客户端seq + 1),表示对客户端第 seq = 0 的TCP包进行应答
216 第三次握手 1 14720 1 seq = 1,表示客户端当前的TCP包序列号ack = 1(服务器seq + 1),表示对服务器端第 seq = 0 的TCP包进行应答

三次握手的第一个报文- SYN包95fb6af1ead6486fbe78632fa35c0c53.png

第一个报文对应的抓包详情

a96279663239428690d4304cd347fad6.png

三次握手的第二个报文- SYN+ACK包

3f8b36148d484a17a430119f3b5194ec.png

第二个报文对应的抓包详情

d77063d52c224aeca6a6bf8ed73f4c1c.png

三次握手的第三个报文- ACK包

210ce145cf8c4909978d65fbfeeb8981.png

第三个报文对应的抓包详情

396d20cd0f7c4a6fbd660d3495c7f410.png

ssh版本协议交换

ced6a7ae16e94c4683b1225f5676261a.png

No 描述 解释
217 server端协议版本协商 服务器将自己的SSH协议版本发送到客户端,格式为:SSH-protoversion(版本号)-softwareversion(自定义) SP(空格一个,可选) comments(注释,可选) CR(回车) LF(换行)
219 client协议版本协商 客户端将自己的SSH协议版本发送到服务器,格式为:SSH-protoversion(版本号)-softwareversion(自定义) SP(空格一个,可选) comments(注释,可选) CR(回车符) LF(换行符)

密钥协商key阶段

221-228是SSH版本协议交换过程。

0263356a373f4b118ec75d2903a45ce4.png

密钥协商过程从客户端和服务器相互发出Key Exchange Init请求开始,主要是告诉对方自己支持的相关加密算法列表、MAC算法列表等。

6d00bd42f615423990da373592453d62.png

最后协商成功之后,将会生成一个对称加密会话密钥key以及一个会话ID,在这里要特别强调,这个是对称加密密钥key,不要和公钥相混淆了,公钥和密钥在上面开头已经着重强调两者的区别了,公钥是给客户端去验证服务器用的。

在这一步中,公钥会从服务器传送到客户端:

7efd2caaa9024782ac1cec38db54bb82.png

而会话密钥是通过D-H算法计算出来的,不会在网络上传输,其破解的难度取决于离散对数的破解难度,一般不会被破解的,有兴趣的可以自行了解该算法原理。

Key Exchange Init发送的请求包数据分析

98b212fd6a55468997a9bc94c42178bb.png


No 描述 解释
1 kex_algorithms 密钥交换算法,里边即包含我们使用的D-H算法,用于生成会话密钥
2 server_host_key_algorithms

服务器主机密钥算法,可以采用 ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,有公钥和私钥的说法,公钥即我们上面讲到的pub key,对于公钥私钥的概念,可以参见understanding public key private key concepts

3 encryption_algorithms_client_to_server 对称加密算法,常用的有aes128-cbc,3des-cbc

服务器首次ssh的指纹信息就是ecdsa-sha2-nistp256算法生成的.

看懂wireshark抓包数据的前置知识

tcp的格式

d92e0128d8774a32ba5a5b94a2242169.png

参考

【1】 参考此文章

【2】 小林codding

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
安全 Linux 网络安全
Linux加强篇009-使用ssh服务管理远程主机
山重水复疑无路,柳暗花明又一村
275 0
Linux加强篇009-使用ssh服务管理远程主机
|
9月前
|
Linux 网络安全 数据安全/隐私保护
Linux下ssh远程主机报错:ssh_exchange_identification: read: Connection 解决
Linux下ssh远程主机报错:ssh_exchange_identification: read: Connection 解决
139 0
|
分布式计算 安全 Ubuntu
ssh 配置:在 Linux 中 ssh 配置无密码登陆完整步骤以及易错点分析
ssh 配置:在 Linux 中 ssh 配置无密码登陆完整步骤以及易错点分析
443 1
ssh 配置:在 Linux 中 ssh 配置无密码登陆完整步骤以及易错点分析
|
Java 数据库连接 网络安全
ssh框架整合时的延迟加载问题(no session问题)的分析以及解决方案
ssh框架整合时的延迟加载问题(no session问题)的分析以及解决方案
74 0
ssh框架整合时的延迟加载问题(no session问题)的分析以及解决方案
|
弹性计算 安全 算法
通过WireShark对SSH协议进行分析
该实验探讨了SSH的基于口令安全认证,主要关注SSH2的传输层协议和用户认证协议。实验中,客户端使用Termius,服务器端为运行Ubuntu的ECS,均基于SSH2。连接过程包括建立加密通道、用户密码加密传输及认证。通过抓包分析了SSH连接步骤,如版本协商、加密算法选择、公钥确认和Diffie-Hellman密钥交换。实验强调了基于口令认证的SSH在遭遇中间人攻击时的安全风险,提示用户需警惕服务器指纹的变化,防止MITM攻击。
2359 0
通过WireShark对SSH协议进行分析
|
弹性计算 Oracle 关系型数据库
NO.8 学会如何部署Oracle数据库、了解FTP机制、通过Squid代理上网、SSH密钥登录,最后学会故障分析,着重推荐“应用数据迁移网络异常案例分析”这篇
NO.8 本月我们首先了解一下新增的部分实用功能和如何部署Oracle数据库、了解FTP机制、通过Squid代理上网、SSH密钥登录,最后我们还是要学会故障分析,着重推荐“应用数据迁移网络异常案例分析”这篇。
2114 0
|
搜索推荐 网络安全 数据安全/隐私保护
ssh无密码登录失败分析
ssh-keys.png 好久之前在公司的 PC 机上设置了 alias 登录服务器,感觉挺方便的.例如: alias 184='ssh -lroot xxx.
1558 0
|
Ubuntu 网络安全 数据安全/隐私保护
SSH免输密码连接远程主机
为了练习使用Docker,我租用了一个服务器在东亚某国VPS主机(这样延迟比较低),安装了Ubuntu。 每次SSH登录,都得使用系统随机分配给我的密码,特别难记。
943 0