通过 ssh 隧道使代理在远程服务器上可用

通过 ssh 隧道使代理在远程服务器上可用

我知道我可以使用 ssh 隧道在我的计算机上创建一个“代理”,这样我就可以让本地生成的所有流量都通过远程服务器。就像这样:

$ ssh -D 12345 myuser@remote_ssh_server

但是如果我需要在远程服务器上创建一个“代理”,以便我发送的所有流量都将通过我的本地计算机,该怎么办?使用 ssh 可以做到这一点吗?

本质上,我想使用我的本地互联网连接和一些特定的命令来远程运行,因为服务器无法直接访问互联网。

答案1

最简单的方法是一次一个端口和主机。例如,要将流量从 remote:8001 转发到 intraserver:80,

ssh -R 8001:intraserver:80 myuser@remote

但是如果你想要转发所有来自远程的流量,并且你在本地主机上运行着一个 ssh 服务器,

ssh -R 2200:localhost:22 myuser@remote ssh -D 10800 -p 2200 localhost

展开来说:

  • -R 2200:localhost:22设置从 remote:2200 到 localhost:22 的转发。
  • ssh -p 2200 localhost在远程运行 ssh,连接到 remote:2200,然后返回 localhost:22(通过第一个 ssh 连接建立隧道)。
  • -D 10800从远程:10800 建立 SOCKS 隧道,通过从远程到本地主机的连接。

相关内容