如何使用 ssh-add 从代理中删除身份(pem 文件)

How to use ssh-add to remove identities (pem files) from the agent

我可以使用 ssh-add 非常轻松地将 pem 文件添加到我的 SSH 代理,如下所示:

$ ssh-add /home/jsmith/keys/mytest.pem

但我似乎无法删除它们:

$ ssh-add -d /home/jsmith/keys/mytest.pem
Bad key file /home/jsmith/keys/mytest.pem: No such file or directory

pem 文件仍然存在...我没有以任何方式移动或更改它。为什么我在从我刚才添加的 SSH 代理中删除这个 pem 文件时遇到这么多麻烦?正确的做法是什么?

我想避免使用ssh-add -D(大写"D"),因为那会从我的SSH代理中删除所有身份,我只想删除我指定的那个。

为此您必须使用 public 键。因此,首先提取 public 密钥,然后将其从代理中删除。

ssh-keygen -y -f /home/jsmith/keys/mytest.pem > /home/jsmith/keys/mytest.pub
ssh-add -d /home/jsmith/keys/mytest.pub

手册页也提到了 "public" 键:"if no public key is found at a given path, ssh-add will append .pub and retry"。

如果您知道与该密钥关联的评论,您可以简单地从代理获取 public 密钥并将其通过管道传回以将其删除。

ssh-add -L | grep -F 'test@example.com' | ssh-add -d -

我发现的最佳选择是 re-add 同一个文件,但 life-time 为 1 秒:

ssh-add -t 1 myfile.pem

比提取public键更容易记住。