我有一个关于 SSH 的有趣问题。我在学校有一台机器,我想从其他地方访问它。它在防火墙/NAT 后面,所以我不能直接访问它。我有一个租用的 Web 服务器,我可以从任何地方通过 SSH 访问它。我想知道我是否可以通过端口转发做一些巫术,通过 Web 服务器访问我在学校的机器。我认为这取决于你是否可以“反向”使用 SSH,这可能可行,也可能不可行。
基本上:
机器 A 可以访问机器 B
机器 C 也可以访问机器 B
机器 A 如何访问机器 C?
答案1
至于“落后” SSH有反向远程 Shell那我一直在使用一段时间内处于类似的情况。
但在这里,需要先澄清一些事情:
- 什么样的访问你需要吗?我们是在谈论仅限 SSH或者你的意思还有其他?
- 这是什么网络服务器(乙)?是否可以访问目的地(C)直接无问题(这是不可能的A)?或者这只是一个问题未知/动态 IP源计算机(A)?
我假设在标准情况下,你可以从C没有限制,并且所有新入站流量都被过滤,对吗?
更新:
在这种情况下你可以使用反向远程 Shell连接自C(学校)乙(SSH 账户)。然后从A(回家乙通过 SSH 获得反向控制台访问权限C. 其优点是它几乎可以在任何配置下工作。
主要缺点:
- 它只支持 SSH,而且当你有本地访问权限时可以执行以下任务C。
- 你绝对信任乙(您的会话不会被窃取)。
这有点麻烦。使用起来会容易得多SSH 端口转发可以,但有时大学/学校会阻止它(至少从我的经验来看)。请看看您是否可以在您的环境中使用它。然后应该可以找到更简单、更优雅的解决方案。
答案2
是的,您可以使用 SSH 进行端口转发,以访问学校的机器。您需要做的是:
从学校的机器上,发出以下命令:
ssh -R 服务器上的端口:本地主机:本地端口 用户@服务器
您可以使用家里的机器执行以下操作:
ssh -L 本地端口:本地主机:服务器上的端口用户@服务器
现在,您可以local_port
在家的计算机上访问您的,并将转发到local_port
学校的计算机上。例如,如果 local_port 是 80,您将能够输入http://本地主机/在您的网络浏览器上并访问在学校机器上运行的网络服务器。