"SOCKS5代理"和"ssh隧道"是同一件事吗?

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

那么这些概念——SOCKS5代理ssh隧道反向ssh隧道如何彼此相关?

1个回答

6
您所描述的是 SOCKS 代理,它是各种工具使用的独立协议。openssh 的作用是将该协议加密隧道从一个点到另一个点。但更精确地说,它被称为 TCP 端口转发(它通过安全隧道将客户端的一个端口转发到服务器)。
openssh 中,还有其他使用 TCP 端口转发的可能性,可以使用名为 Local(“将”远程服务带到本地主机)和 Remote(使本地服务可从远程主机访问)的开关 -L-R
正如您所看到的,它们之间存在相似之处,但实现方式不同。它们都是 TCP 端口转发(通过安全隧道)。Dynamic (-D) 特殊之处在于,服务器必须了解 SOCKS 协议。

阅读您的答案,再次阅读有关ssh隧道的维基百科页面,再次阅读有关ssh端口转发的Ubuntu维基页面,再次阅读ssh man页面上的-L -R -D,再次阅读这篇文章(http://unix.stackexchange.com/questions/115897/whats-ssh-port-forwarding-and-whats-the-difference-between-ssh-local-and-remot),最后让我明白了! - Jay Somedon
还有一个问题:我知道SSH和SOCKS是完全不同的两个协议,但是.. openssh是否使用SOCKS协议作为其-D选项,因为SOCKS协议与SSH协议有某种关联?(也许两者都是由同一作者起草)或者openssh只是碰巧使用SOCKS来完成这项工作? - Jay Somedon
不,Socks 在 SSH 中使用是因为它是其他应用程序使用的某种标准协议。您可以在大多数浏览器中使用 SOCKS,但也可以在 Linux 系统范围内使用,据我所知。 - Jakuje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接