假设我有三台电脑
home
我家里的电脑work
我工作用的电脑server
我的服务器
由于公司防火墙,我无法使用 ssh 连接home
。但我可以从工作地点 ssh 任何计算机。例如,我可以从工作地点 ssh 服务器计算机。我想要做的是使用连接连接到互联网(我想访问工作计算机)。我从一些教程中了解到我可以这样做:work
work
localhost
woork:~# ssh -D 4096 server
但这只允许我使用服务器连接到互联网。我想做相反的操作,但我无法work
从访问server
。
最终的结果是打开 Firefoxhome
并浏览localhost
到work
。
我的情况有什么解决方案?
答案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:5901
或0.0.0.0:1234:127.0.0.1:5901
不过请记住,这是针对 VNC 之类的东西,但如果您针对 HTTP 执行此操作,则只能查看一个站点。如您所见,-D 是本地的。
有些人在家里,想要访问工作中的服务器,而该服务器位于他们无法控制的防火墙后面。
但是如果您想访问互联网,那么您在工作时想要访问家里的服务器。
你为什么就不能这么做呢?
尝试在家中的 80 端口或 443 端口上运行 SSHD 服务器,然后执行work~:#ssh homeip -p 443