![通过 ssh 隧道使代理在远程服务器上可用](https://linux22.com/image/640608/%E9%80%9A%E8%BF%87%20ssh%20%E9%9A%A7%E9%81%93%E4%BD%BF%E4%BB%A3%E7%90%86%E5%9C%A8%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E5%8F%AF%E7%94%A8.png)
我知道我可以使用 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 隧道,通过从远程到本地主机的连接。