"SOCKS5 proxying" 和 "ssh tunneling" 是一回事吗?

Are "SOCKS5 proxying" and "ssh tunneling" same thing?

  1. 我知道我可以 运行 通过 ssh -D some-port-number remote-server-url 的 socks5 代理。
  2. 我知道我可以配置我的应用程序(例如 firefox)以使用 socks5 代理(通常通过指定类似 socks5://localhost:that-port-number-metioned-above 的内容)。
  3. 我听到网上有人将此技术称为 "socks5 proxy" 或 "ssh tunneling";有时我什至看到人们在谈论 "reverse ssh tunnling".
  4. 但据我所知,socks5 和ssh 是完全不同的协议,它们之间唯一的相似之处在于它们都具有服务器-客户端架构。阅读维基定义和谷歌搜索这些概念并没有澄清我的困惑..

那么这些概念 - SOCKS5 proxyingssh tunnelingreverse ssh tunneling 如何相互关联?

您描述的是 SOCKS 代理。它是各种工具使用的独立协议。 openssh 的作用是将加密的协议从一个点传送到另一个点。但更准确地说,它被称为 TCP 端口转发(它将客户端的一个端口通过安全隧道转发到服务器)。

openssh 中还有其他使用 TCP 端口转发的可能性,使用 -L-R 正确命名为 Local(“将远程服务带到本地主机”)和 Remote 的交换机(使本地服务可以从远程主机访问)。

如您所见,它们有相似之处,但实现方式不同。它们都是 TCP 端口转发(通过安全隧道)。 Dynamic (-D) 特殊,因为服务器必须理解 SOCKS 协议。