SSH 使用 UDP 来做什么?

SSH 使用 UDP 来做什么?

在进行研究时,我注意到 SSH 同时使用 TCP 和 UDP。我完全理解 TCP 的用途,但 UDP 似乎有点奇怪。为什么我要使用“不可靠”的传输协议和最少的握手来实现安全的 shell 访问?

我能想到的唯一用途是 SCP,因此(大)文件传输。但是,由于有握手机制,TCP 不是更有用吗?

事实上,我正在考虑仅为 SSH 打开 TCP,但不知道这样做会产生什么后果。


编辑

事实证明,不仅有一篇关于 UDP 上的 ssh 的论文,而且还有一个成熟的 ssh 实现,称为莫什。然而,经典的 ssh 仍然只使用 TCP,正如其RFC 文档

答案1

我尝试了从 Windows 到 Unix 以及从 Unix 到 Unix 的多个 SSH 连接,但在端口 22 上没有收到任何 UDP 数据包。而且服务器只监听 TCP。

在此论文他们尝试实现 UDP 进行 SSH 传输,但他们也提到默认只使用 TCP:“。OpenSSH 始终在其所有网络连接中使用 TCP,因此也在其 VPN 功能中使用 TCP。”维基百科页面可能会说它是 UDP,因为 SSH 开发人员最初请求分配 UDP 和 TCP,但相关 RFC没有提及它。

答案2

... SSH 协议使用或曾经使用 22/UDP 通过 TCP 进行隧道控制。如果通过 Wireshark 正确解码,并且您正在通过 ssh-agent 或远程或本地隧道建立连接,您会注意到 UDP 封装在 TCP 段中。

相关内容