问题:我有20-30个ssh-agent
身份。大多数服务器都拒绝使用进行身份验证Too many failed authentications
,因为SSH通常不允许我尝试20种不同的密钥来登录。
目前,我正在使用IdentityFile
和IdentitiesOnly
指令为每个主机手动指定身份文件,以便SSH仅尝试一个有效的密钥文件。
不幸的是,一旦不再有原始密钥,此操作就会停止。ssh-add -l
向我显示了每个密钥文件的正确路径,并且它们与中的路径匹配.ssh/config
,但是它不起作用。显然,SSH通过公钥签名而不是文件名来选择身份,这意味着原始文件必须可用,以便SSH可以提取公钥。
这有两个问题:
- 我拔下持有钥匙的闪存驱动器时,它立即停止工作
- 由于密钥文件在远程主机上不可用,它使代理转发无用
当然,我可以从身份文件中提取公钥,并将其存储在我的计算机以及通常登录的每台远程计算机上。但是,这似乎不是理想的解决方案。
我需要的是通过文件名从ssh-agent选择身份的可能性,这样,即使在我SSH输入的远程主机上,我也可以使用.ssh/config
或通过轻松选择正确的密钥-i /path/to/original/key
。如果我可以“昵称”这些键,甚至不必指定完整路径,那就更好了。
authorized_keys
文件,该文件根据所使用的密钥执行不同的命令,而从未允许直接访问shell。