如何设置SSHconfiguration来抓取一部分ssh主机名并作为variables使用?

我正在将SSH设置为多个数据中心,并且设置相同。 每个数据中心都有一个跳箱,在这之后可以访问各种数据库服务器等。

手动指定所有这些服务器的条目是一件很痛苦的事,当它们在数据中心几乎相同时,除了跳转IP之外。 所以我想设置我的.ssh/config文件,这样我就可以键入datacenter_name-server_behind_jumpbox并让SSH从主机的前面抓取datacenter_name (这样我就可以在ProxyCommand重新使用它了)。

例如,如果我想访问datacenter1中的Maria服务器,我会创build一个名为datacenter1的跳转框的SSH条目。 然后对于它后面的Maria服务器,我会设置如下所示:

 Host %dc%-maria Hostname maria User jeff ProxyCommand ssh -q -W %h:%p %dc 

这样我只需要为位于跳箱后面的每种types的服务器设置一个条目,并且它自动知道要打哪个数据中心跳箱。

是这样的可能吗?

我用不同的代理主机向主机名添加假后缀

 Host *.dc1 ProxyCommand ssh -q %r@dc1 -W %h:%p Host *.dc2 ProxyCommand ssh -q %r@dc2 -W %h:%p 

然后做一些像ssh server1.dc1,它将使用代理主机。

您可以为自定义设置添加主机条目,如下所示:

 Host server1.* User jeff 

您可以将脚本作为自定义ProxyCommand运行,并在真正的 ProxyCommand之前执行您的工作:

.ssh/config

 Host *-maria Hostname maria User jeff ProxyCommand /bin/datacenter_ssh.sh %h %p 

datacenter_ssh.sh

 #!/bin/bash COMBINED=$1 DATACENTER=$(echo $COMBINED | cut -d'-' -f1) SERVER=$(echo $COMBINED | cut -d'-' -f2) PORT=$2 ssh -q -W $SERVER:$PORT $DATACENTER