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

Fil*_*eia 6 ssh proxy ssh-tunnel

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

$ ssh -D 12345 myuser@remote_ssh_server
Run Code Online (Sandbox Code Playgroud)

但是如果我需要在远程服务器上创建一个“代理”,以便我发送的所有流量都将通过我的本地机器呢?这可以通过 ssh 实现吗?

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

And*_*man 5

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

ssh -R 8001:intraserver:80 myuser@remote
Run Code Online (Sandbox Code Playgroud)

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

ssh -R 2200:localhost:22 myuser@remote ssh -D 10800 -p 2200 localhost
Run Code Online (Sandbox Code Playgroud)

展开:

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