多个 SSH 链接(tsocks、socksify、proxycommand 等)

多个 SSH 链接(tsocks、socksify、proxycommand 等)

https://i.stack.imgur.com/YTOvt.png

目标:您需要通过 SSH、SCP 从客户端“直接”到达“服务器 B”。

“服务器 B”位于“服务器 A”旁边。例如:它们位于同一子网中,但只有“服务器 A”可以从 Internet 访问 -> 因此“服务器 B”只能间接访问。


我知道如何使用 tsocks:

安装 tsocks

yum install tsocks

配置它[默认情况下没有配置文件..]

vim /etc/tsocks.conf
server = 127.0.0.1
server_port = 4000

创建 ssh 隧道

ssh -v -fND localhost:4000 USERNAME@SERVER-A

检查是否已创建

ps aux | fgrep -i ssh
USER      8894  0.0  0.0   9780   708 ?        Ss   11:58   0:00 ssh -v -fND localhost:4000 USERNAME@SERVER-A
netstat -tulpn | fgrep -i ssh
tcp        0      0 127.0.0.1:4000              0.0.0.0:*                   LISTEN      8894/ssh

如何使用tsocks

tsocks ssh root@SERVER-B

杀死 ssh 隧道

kill `pgrep -f 'D localhost:4000'`


对我来说,这完全没问题。很好。

问题:如何使用多个 ssh 隧道(例如:tsocks)?
我的意思是我必须使用多个 ssh 隧道(当然是在不同的端口上)。
如何设置 tsocks 来“记住”多个 ssh 隧道(端口)?

“/etc/tsocks.conf”文件只允许一个服务器,没问题,因为如果我通过 ssh 隧道连接到某个地方,我必须通过 127.0.0.1,但我需要更多端口,因为 1 个端口 = 1 个 ssh 隧道。多个 ssh 隧道不能绑定到 1 个端口。
我在“台式电脑”上使用 Fedora 14

谢谢!

答案1

tsocks允许多个 SOCKS 服务,您可以将其设置ssh -D为每个所需目标使用不同的 SOCKS 服务(即在不同端口上进行不同的侦听)。man tsocks.conf更多细节。

假设/etc/tsocks.conf包含:

path {
    server = localhost
    server_port = 1081
    reaches = <ip-address-of-server-b>/32
    }
path {
    server = localhost
    server_port = 1082
    reaches = <ip-address-of-server-d>/32
    }

然后你会跑

ssh -fND :1081 server-a & sleep 1 ; tsocks ssh server-b
ssh -fND :1082 server-c & sleep 1 ; tsocks ssh server-d

相关内容