我正在尝试配置 SSH 配置文件以尝试域的多个不同密钥和用户。我最初在点文件中使用一个函数来执行此操作,但它笨拙、缓慢且丑陋。
我的公司有多台服务器,拥有不同的私钥和用于SSH登录的用户。主机名有很多,但域总是相同的。
我可以在我们的主记录中查找我需要的密钥/用户名对,但这并不有趣。
这是我的 SSH 配置文件的一部分:
Host *.companydomain.net
User ubuntu
PreferredAuthentications publickey
IdentityFile ~/.ssh/key_a.pem
Host *.companydomain.net
User ubuntu
PreferredAuthentications publickey
IdentityFile ~/.ssh/key_b
Host *.companydomain.net
User anotheruser
PreferredAuthentications publickey
IdentityFile ~/.ssh/key_c
所以现在看来第一个条目(使用key_a.pem
)已被尝试,然后它失败并且没有失败。理想情况下,我希望这个失败并尝试三种组合中的每一种,直到登录成功。
我正在运行运行 OpenSSH_7.6p1 的 macOS。
谢谢!
答案1
该手册说您可以使用多个IdentityFile
指令,并且将使用所有列出的文件,因此前两个条目可以组合起来
Host *.companydomain.net
User ubuntu
PreferredAuthentications publickey
IdentityFile ~/.ssh/key_a.pem
IdentityFile ~/.ssh/key_b
但我不认为您可以通过一次ssh
调用(或一个 SSH 连接)尝试多个用户名,因此您可能需要编写脚本。
如果你把第三个IdentityFile
和其他的放在一起,脚本不需要很长,我认为应该这样做:
#!/bin/sh
for user in ubuntu anotheruser; do
ssh -l "$user" "$@" && break;
done
(User
在这种情况下,请从配置文件中删除该指令。)