使用 SSH 实现“中间会面”

使用 SSH 实现“中间会面”

我有一个关于 SSH 的有趣问题。我在学校有一台机器,我想从其他地方访问它。它在防火墙/NAT 后面,所以我不能直接访问它。我有一个租用的 Web 服务器,我可以从任何地方通过 SSH 访问它。我想知道我是否可以通过端口转发做一些巫术,通过 Web 服务器访问我在学校的机器。我认为这取决于你是否可以“反向”使用 SSH,这可能可行,也可能不可行。

基本上:
机器 A 可以访问机器 B
机器 C 也可以访问机器 B
机器 A 如何访问机器 C?

答案1

至于“落后” SSH反向远程 Shell我一直在使用一段时间内处于类似的情况。

但在这里,需要先澄清一些事情:

  1. 什么样的访问你需要吗?我们是在谈论仅限 SSH或者你的意思还有其他?
  2. 这是什么网络服务器)?是否可以访问目的地(C)直接无问题(这是不可能的A)?或者这只是一个问题未知/动态 IP源计算机(A)?

我假设在标准情况下,你可以从C没有限制,并且所有新入站流量都被过滤,对吗?

更新:

在这种情况下你可以使用反向远程 Shell连接自C(学校)(SSH 账户)。然后从A(回家通过 SSH 获得反向控制台访问权限C. 其优点是它几乎可以在任何配置下工作。

主要缺点:

  1. 它只支持 SSH,而且当你有本地访问权限时可以执行以下任务C
  2. 你绝对信任(您的会话不会被窃取)。

这有点麻烦。使用起来会容易得多SSH 端口转发可以,但有时大学/学校会阻止它(至少从我的经验来看)。请看看您是否可以在您的环境中使用它。然后应该可以找到更简单、更优雅的解决方案。

答案2

是的,您可以使用 SSH 进行端口转发,以访问学校的机器。您需要做的是:

  1. 从学校的机器上,发出以下命令:

    ssh -R 服务器上的端口:本地主机:本地端口 用户@服务器

  2. 您可以使用家里的机器执行以下操作:

    ssh -L 本地端口:本地主机:服务器上的端口用户@服务器

现在,您可以local_port在家的计算机上访问您的,并将转发到local_port学校的计算机上。例如,如果 local_port 是 80,您将能够输入http://本地主机/在您的网络浏览器上并访问在学校机器上运行的网络服务器。

相关内容