我在设置以下内容时遇到问题:
我在本地机器(我的笔记本)上使用 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 一起使用,我刚刚尝试过。