SSH 隧道绕过防火墙(http 和 socks)

SSH 隧道绕过防火墙(http 和 socks)

我在设置以下内容时遇到问题:

我在本地机器(我的笔记本)上使用 Linux。

我通过 ssh 远程登录到公司机器,该机器位于防火墙后面,只允许传入 ssh 连接(端口 22),不允许任何出站连接。我确实在本地和远程都拥有完全 root 访问权限,但远程是 VPS,位于硬件防火墙后面。

我现在需要远程网络访问(HTTP 和其他协议)来下载和构建一些软件。我还需要访问非 HTTP 协议,例如 git。

我希望设置一个反向 SSH 隧道来使用我的本地机器,在那里我可以运行一个 socks 服务器。这样,远程网络访问将通过 SSH 隧道重定向到在本地机器上运行的 socks 服务器。

我该如何进行这样的设置?

谢谢

答案1

事实证明这比我想象的要容易得多,我做错的是试图用一个命令完成所有事情(这实际上是可能的,因为我只需要在本地运行命令)。

唯一需要做的事情是 1)在 LOCAL 和 REMOTE 之间建立反向隧道,然后在 LOCAL 上启动动态端口转发。

我现在可以通过本地隧道在远程访问互联网,socks应用程序设置为使用转发端口,该端口重定向到在本地运行的动态端口转发。

本地:> ssh -D SOCKS_PORT 本地用户@本地主机-p LOCAL_SSH_PORT

本地:> ssh -R SOCKS_PORT:localhost:SOCKS_PORT remote_user @REMOTE -p REMOTE_SSH_PORT

答案2

在 Unix 上,SSH 已经捆绑了 socks 服务器。只需使用动态转发设置端口即可。例如:

Host REMOTE
  Hostname remote.yourcompany.com
  User you
  ServerAliveInterval 110
  ForwardAgent yes
  DynamicForward 9000

然后在 Firefox 中,你可以将代理设置为 socks 5,主机:localhost,端口:9000

您可能还感兴趣袜子这是对 socks 的透明代理支持。想像在远程网络中一样运行“svn update”?只需运行“tsocks svn update”。

我的 tsocks.conf 如下所示:

# We can access 192.168.0.* directly
local = 127.0.0.1/255.255.255.0

# Otherwise we use the server
server = 127.0.0.1

server_port = 9000

它可以与 SSH socks 一起使用,我刚刚尝试过。

相关内容