我刚刚通过谷歌搜索了解了 SSH 隧道的基础知识。
我看到了这个有趣的问题:反向 SSH 隧道如何工作?
但我仍然觉得有点令人困惑,更具体地说[电子邮件受保护]部分。
因此,根据其中一个答案,有 4 个用例。我是这样理解它们的。如果我错了,请纠正我。为简单起见,我假设我在本地计算机上运行 ssh 命令。
ssh -L 123:localhost:456 [email protected]
- 这会将所有流量从我的本地计算机上的端口 123 转发到 example.com 上的端口 456。但 example.com 会看到来自其自己的本地主机的流量。
ssh -L 123:google.com:456 [email protected]
- 这会将所有流量从我本地计算机上的端口 123 转发到 google.com 上的端口 456。之后它将建立到 example.com 的 ssh 会话。这对我来说没有意义,为什么我们需要[电子邮件受保护]在这种情况下?
ssh -R 123:localhost:456 [email protected]
- 这将建立一个 ssh 会话[电子邮件受保护]并将所有流量从 example.com 上的端口 123 转发到我本地计算机上的端口 456。然后,我的本地计算机将看到来自本地主机的流量。
ssh -R 123:google.com:456 [email protected]
- 这将建立一个 ssh 会话[电子邮件受保护]并将所有流量从 example.com 上的端口 123 转发到 google.com 上的端口 456。与 #2 不同,example.com 用作远程主机。
所以我的问题是:为什么我们需要[电子邮件受保护]在#2 上?我有什么错吗?
更新
好吧,我想我现在明白了。我对以下内容有误解[电子邮件受保护]部分并认为这是可选的。似乎首先建立 ssh 会话,然后评估端口:主机:端口。
例如:对于#2,它将首先建立到 example.com 的会话,然后将流量转发到 google.com:456。对于#1,它将首先建立到 example.com 的会话,然后将流量转发到 localhost:456 (这是同一主机)
答案1
当 example.com 可以连接到 [google.com] 主机而您的盒子不能连接时,第二种情况非常有用。例如,您的 VPN 连接仅限于多个盒子,而您想要访问不在列表中的主机。 ssh -L 123:target.host.com:456[电子邮件受保护]。
因此,基本用法是跳转到网络内部或跳转到网络外部(ssh 到某种代理/网关)。
最后,目标服务器可能存在防火墙限制,仅接受来自给定主机的连接。