仅使用ssh-agent中的私钥,避免“身份验证失败太多”


3

我将所有加密的私钥存储在encfs文件中。我将encfs文件挂载(解密)到文件夹,将所有私钥添加到带有生存标志和卸载文件夹的ssh-agent。在这种情况下,我的私钥文件保持加密,我可以通过ssh-agent访问它们。

我的密钥列表变得越来越大,我开始收到“%username%的身份验证失败太多”我搜索了解决方法,常见的建议是在〜/ .ssh / config中指定每个IdentityFile

Host hostalias
    Hostname my.host.name
    User username
    IdentityFile ~/.ssh/unencrypted_key

但在这种情况下,我的密钥应始终以未加密的状态存储,因为ssh将直接访问它们(忽略ssh-agent)。

是否有任何可能的解决方案来指定应该使用哪个主机的私有ssh-key(来自ssh-agent)?

PS每个键都有自己的指纹,我认为这可以通过在配置中指定它来解决(类似这样):

Host hostalias
    Hostname my.host.name
    User username
    IdentityFingerPrint 0c:d6:e6:64:0f:b5:1f:29:11:51:12:74:90:55:49:ae

但我没有找到类似的东西。

Answers:


1

首先,请注意SSH私钥文件本身可以使用密码加密,而无需任何其他工具,如encfs。使用ssh-keygen -f <file> -p将设置密码。(最近的OpenSSH版本使用AES-128-CBC。)

但是当你同时运行代理IdentityFile 代理时,ssh只会在选择应该使用的密钥时使用该文件作为提示。为此,它只需要检查密钥的公共一半。因此,只要将公钥提取到相应的.pub文件,您就不需要对密钥进行解密,这是默认情况下完成的,但可以重复使用ssh-keygen -f <file> -y


如果您链接登录到不同的服务器,则需要再次将文件分布在所有计算机上。(即使它只是公共部分......)
Robert Siemer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.