使用 SSH 代理时如何指定身份?

使用 SSH 代理时如何指定身份?

我有一个稍微不寻常的用例......

我正在通过证书使用 SSH(其中身份验证机制不仅是来自私钥的签名,还包括签名证书的出示)。

我有许多端点/服务器和不同的环境,我在同一个会话中访问它们,因此我ssh-agent一次“加载”了许多身份。

我正在使用,ssh-agent因为它提供了许多诸如此类的优点forwarding

我遇到的问题是,我的 VM 端点都设置sshd_configMaxAuthTries低值。这无法更改。我注意到,当代理添加了许多身份(证书/密钥)并且我尝试连接到给定端点时,代理似乎会循环遍历所有添加的身份,依次尝试每个身份,这有时会触发规则MaxAuthTries,导致Too many authentication failures

所以我的问题是,在使用时ssh-agent是否有办法指定应该使用哪个身份?

我想使用ssh-agent但不想让它循环尝试每一个身份。

我考虑过使用主机配置文件,但考虑到我维护的刀片数量,这需要手动操作。

我已经尝试过该-o标志,但是它似乎没有查看代理中已加载的身份,而是尝试“本地”找到它们 - 其中本地是当前的 SSH 上下文。

谢谢阅读...

答案1

你能根据主机名进行区分吗?如果可以,你可以尝试将以下内容放入 ~/.ssh/config 中。

Host *.domain1.com
User <your_username>
IdentityFile <certificate>

Host *.domain2.com
User <your_username>
IdentityFile <certificate>

正如 OP 的评论中提到的,此解决方案仅在主机名称中存在某种逻辑时才有效。我的意思是能够从您要连接的主机名、域名等中确定要使用的密钥。

相关内容