隧道到相同的端口号

Cos*_*s64 3 ssh-tunneling

我有一个应用程序连接到同一端口上的多个主机:

a.protected:123
b.protected:123
Run Code Online (Sandbox Code Playgroud)

我无法直接访问它们中的任何一个,但我可以建立一个 ssh 隧道(通过x.accessible)。

如果端口不同,我可以将隧道连接到相同的端口号:

ssh -f me@x.accessible -L 123:a.protected:123 -N
Run Code Online (Sandbox Code Playgroud)

然后我会添加 a.protected 作为 localhost 的别名,在 /etc/hosts

但是考虑到更多主机使用相同的端口号,我有什么选择?如何在不更改应用程序的情况下使用隧道让应用程序连接到它们?

mic*_*has 8

你有两个选择。要么使用不同的源地址,要么使用socks 代理。

不同的源地址

您的lo接口配置为127.0.0.1/8,即所有以 127 开头的地址都属于当前主机。

隧道的语法是

-L [bind_address:] port:host:hostport
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用以下内容:

ssh -L 127.1.0.1:123:a.protected:123 -L 127.1.0.2:123:b.protected:123
Run Code Online (Sandbox Code Playgroud)

现在让 a.protected 解析为 127.1.0.1:123,b.protected 解析为 127.1.0.2。

使用袜子代理

ssh -D 1080 
Run Code Online (Sandbox Code Playgroud)

这将在端口上启动本地袜子代理1080。所有连接都将解析并连接到隧道的另一端。

如果您的应用程序支持袜子代理,只需配置它。否则,您tsocks无论如何都可以使用代理。