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