是否可以通过不同的子域通过反向 SSH 隧道连接到不同的客户端?

是否可以通过不同的子域通过反向 SSH 隧道连接到不同的客户端?

因此,当您使用反向 SSH 隧道并且只有一个客户端时,只需在服务器上运行即可。但是如果您有多个客户端怎么ssh -R 1999:localhost:22 remote@server办?ssh -p 1999 localhost

是否可以为 SSH 创建一个通配符子域,以便客户端可以连接到统一端口,例如,并且在服务器上我们可以通过访问不同的客户端。ssh -R 1999:localhost:22 [email protected]ssh -R 1999:localhost:22 [email protected]ssh -p 1999 user1.serverssh -p 1999 user2.server

答案1

您无法通过单个 ip+port 连接代理多个目标,因为 SSH 客户端不会指示它们希望与哪个服务器通信。您的建议当然是可以实现的(通过为每个名称分配新地址),但需要大量的管理开销。

但这可能不是理想的情况。如果每个人都应该通过该服务器(称为堡垒) 无论如何,您拥有的选项不仅仅是普通的端口。

例如,您可以将与转发的机器的连接放在服务器上的文件夹中:

ssh -R /minion/user1.example:localhost:22 [email protected]
ssh -R /minion/user2.example:localhost:22 [email protected]
# or even
ssh -R /minion/$(hostname -f):localhost:22 $(hostname -f)@bastion.example

由于每个套接字都以其所连接的服务器命名,因此一个配置适用于所有套接字:

Host *.example
  ProxyCommand ssh bastion.example netcat -U /chroot/minion/%h

使用它的命令看起来干净简单:

ssh [email protected]
ssh [email protected]

请参阅了解和man 5 ssh_config的解释,您可能想要使用其中的一个。还要注意选项,因为如果套接字已经存在,您不希望设置失败。%h%nStreamLocalBindUnlink

相关内容