因此,当您使用反向 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.server
ssh -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
%n
StreamLocalBindUnlink