我不确定我的问题是否有意义,但我会尝试描述我正在做的事情。
我有三台机器 A、B 和 C。A 是一台不暴露在外界的工作机器。B 是我家里的机器,具有 SSH 访问权限,A 可以通过 SSH 连接到 B。如果我连接到我工作的 VPN,我就可以从 B 连接到 A。C 是我在大学网络上使用的笔记本电脑。基本上我有以下设备:
+----VPN-----+
| |
V |
A----SSH---->B<--SSH--C
我的大学封锁了所有 VPN 连接,所以我无法使用 VPN 工作。我想知道是否有办法绕过这个封锁,以便能够访问我的工作机器?
有没有办法“转发”VPN 连接,或者通过机器 B 设置隧道,以便 C 可以到达 A?我有一个相当复杂的想法,就是在 A 上设置一个代理,通过 SSH 连接将代理端口转发到 B,然后通过 SSH 从 C 到 B 设置隧道,将本地端口转发到 B 上的代理端口。但是,一旦设置了代理,我就无法真正进行远程端口转发(SSH 会挂起)。
有没有什么办法可以完成我想做的事情?
答案1
我认为只要您维持 A 和 B 之间的 VPN 连接,您就应该能够使用 ssh 代理魔法进行连接。
看起来这对你有用:
foo@C:~ $ ssh -o ProxyCommand="ssh -W %h:%p <B>" <A>
无需 VPN,通过远程端口转发保持从 A 到 B 的永久 ssh 连接即可实现此目的
foo@A:~ $ ssh -R 2222:localhost:22 B # ensure that this connection is up forever
foo@C:~ $ ssh -o ProxyCommand="ssh -W localhost:2222 <B>" <A>
更多 hack 请点击这里: https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts