如何在一个别名 (~/.ssh/config) 下随机选择多个主机名之一

如何在一个别名 (~/.ssh/config) 下随机选择多个主机名之一

是否可以让 ssh 选择一个随机 IP 地址(使用通配符)进行连接?我们有 30 台计算机,其 IP 地址来自“asd1.asd.asd.asd.com”到“asd30.asd.asd.asd.com”,我想使用别名 xxxx 连接到其中一个(随机选择)。是否有一种简单的方法可以使用 ~/.ssh/config 文件来执行此操作?

我尝试使用这个通配符:

Host xxxx
Hostname asd[0-30].asd.asd.asd.com
User my_username

但这不起作用。有任何想法吗?有可能吗?

答案1

如果你真的有必要,你可以这样做:

Host xxxx
     User my_username
     ProxyCommand nc asd$((1+$((RANDOM %% 30)))).asd.asd.asd.com 22

这假设您正在使用 bash shell - 否则您可以将代理命令作为 bash 调用的参数,例如

     ProxyCommand /bin/bash -c "exec nc asd$((1+$((RANDOM %% 30)))).asd.asd.asd.com 22"

答案2

我不认为 ssh 本身可以做到这一点。

如果您将所有 IP 号码分配给您控制的某个区域中的一个主机名,则可以使用 dns 来完成此操作。

另一种选择是编写一个简单的包装器(例如在 Python 中),使用随机选择的地址调用 ssh。

相关内容