因此,当您使用反向SSH隧道并且只有一个客户端时,它就足够在服务器上运行ssh -R 1999:localhost:22 remote@server和ssh -p 1999 localhost了。但如果你有多个客户呢?
是否可以为SSH创建通配符子域,以便客户端可以连接到统一端口(如ssh -R 1999:localhost:22 remote@user1.server、ssh -R 1999:localhost:22 remote@user2.server ),并且在服务器上可以通过ssh -p 1999 user1.server、ssh -p 1999 user2.server访问不同的客户端。
发布于 2019-04-19 16:17:59
不能通过单个ip+port连接代理多个目的地,因为SSH客户端没有指示要与哪个服务器对话。您建议的内容当然是可以实现的(通过为每个名称指定新的地址),而且管理开销很大。
但可能是不可取的。如果每个人都应该通过服务器(称为bastion)连接到转发的机器,那么除了普通端口之外,您还有更多的选项。
例如,您可以将与转发计算机的连接放在服务器上的文件夹中:
ssh -R /minion/user1.example:localhost:22 user1.example@bastion.example
ssh -R /minion/user2.example:localhost:22 user2.example@bastion.example
# 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 user@user1.example
ssh user@user2.example有关%h和%n的解释,请参见D4和D5,您可能希望使用它们之一。还要注意StreamLocalBindUnlink选项,因为如果套接字已经存在,则不希望安装失败。
https://serverfault.com/questions/963826
复制相似问题