如何 ssh 连接防火墙后面的计算机

如何 ssh 连接防火墙后面的计算机

假设我有三台电脑

  1. home我家里的电脑
  2. work我工作用的电脑
  3. server我的服务器

由于公司防火墙,我无法使用 ssh 连接home。但我可以从工作地点 ssh 任何计算机。例如,我可以从工作地点 ssh 服务器计算机。我想要做的是使用连接连接到互联网(我想访问工作计算机)。我从一些教程中了解到我可以这样做:workworklocalhost

woork:~# ssh -D 4096 server

但这只允许我使用服务器连接到互联网。我想做相反的操作,但我无法work从访问server

最终的结果是打开 Firefoxhome并浏览localhostwork

我的情况有什么解决方案?

答案1

如果您可以设置传出 ssh 连接,那么您可能可以设置反向隧道以返回(我不知道 IT 是否有办法禁止这种做法,但您永远不知道)。

work:~# ssh -fN -R 2222:localhost:22 server

然后在服务器上您可以执行以下操作:

server:~# ssh -p2222 localhost

然后,你就会神奇地重新连接到工作机器上的 SSH 服务器端口。默认情况下,端口 2222 仅绑定到“localhost”地址,因此来自家庭的连接请求将不行

home:~# ssh -p2222 server  ;# this will not work

相反,你可以这样做:

home:~# ssh server
server:~# ssh -p2222 localhost

或者像这样的一个命令:

home:~# ssh -o ProxyCommand="ssh -W localhost:2222" server

为了使这一切更容易实现,请将其添加到您的.ssh/config家中:

Host work
    ProxyCommand ssh -W localhost:2222
    HostName server

... 现在:

home:~# ssh work

...只会做正确的事。

可以创建反向隧道绑定,这样就不需要代理业务了,但这样一来,世界上的每个黑客都会攻击你的隧道(认为端口 2222 是非标准的,因此是安全的,这是天真的想法)。失败的访问尝试将显示在“工作”日志中,IT 会发现,然后你就会被解雇。当然,隧道本身可能就是解雇的罪行,但没有必要让它变得明显。

答案2

假设你有

work:~#

home:~#

并且工作:〜#是您无法控制的防火墙

当您写服务器时,我从上下文(ssh -D 4096 服务器)中看到,您指的是 SSH 服务器。(而不是 VNC 服务器)。您应该具体说明,这样更清楚。通常,如果您有 SSH 服务器,它会位于工作或家中。它应该位于您可以控制的带有防火墙的计算机上,即家中。

您通常还会有一个想要访问的常规服务器,而这通常不是 SSH 服务器。虽然它可以是,但有一个问题提供了一个很好的例子,说明人们可能希望它在哪里。

也许你可以进一步解释一下 server:~# 是什么,但我暂时先不提它,因为它看起来没必要,而且你的意思也不清楚,因为如果你有一个 SSH 服务器,比如在工作中,那么你会得到一个提示 work:~#

所以你要做的是

从您无法控制的工作中,您可以建立一个传出连接。因为防火墙会让它们出去。

home:~# START VNC server on e.g. 5901

home:~# START SSHD SERVER on e.g. port 80 <-- whatever the command is to start your sshd.

work:~# ssh -R 1234:127.0.0.1:5901 user@homeip -p 80

home:~# vncviewer 127.0.0.1:1234 

家看到工作。

SSH 需要了解的开关是 -L、-R 和 -D

如果你将客户端程序连接到监听端口的方式是,客户端程序与监听端口位于不同的机器上,那么它需要是 -R*:1234:127.0.0.1:59010.0.0.0:1234:127.0.0.1:5901

不过请记住,这是针对 VNC 之类的东西,但如果您针对 HTTP 执行此操作,则只能查看一个站点。如您所见,-D 是本地的。

有些人在家里,想要访问工作中的服务器,而该服务器位于他们无法控制的防火墙后面。

但是如果您想访问互联网,那么您在工作时想要访问家里的服务器。

你为什么就不能这么做呢?

尝试在家中的 80 端口或 443 端口上运行 SSHD 服务器,然后执行work~:#ssh homeip -p 443

相关内容