我有一个稍微不寻常的用例......
我正在通过证书使用 SSH(其中身份验证机制不仅是来自私钥的签名,还包括签名证书的出示)。
我有许多端点/服务器和不同的环境,我在同一个会话中访问它们,因此我ssh-agent
一次“加载”了许多身份。
我正在使用,ssh-agent
因为它提供了许多诸如此类的优点forwarding
。
我遇到的问题是,我的 VM 端点都设置sshd_config
为MaxAuthTries
低值。这无法更改。我注意到,当代理添加了许多身份(证书/密钥)并且我尝试连接到给定端点时,代理似乎会循环遍历所有添加的身份,依次尝试每个身份,这有时会触发规则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 的评论中提到的,此解决方案仅在主机名称中存在某种逻辑时才有效。我的意思是能够从您要连接的主机名、域名等中确定要使用的密钥。