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

Das*_*tor 1 linux ssh pem ssh-agent

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

$ ssh-add /home/jsmith/keys/mytest.pem
Run Code Online (Sandbox Code Playgroud)

但我似乎无法删除它们:

$ ssh-add -d /home/jsmith/keys/mytest.pem
Bad key file /home/jsmith/keys/mytest.pem: No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

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

Ton*_*ark 5

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

ssh-keygen -y -f /home/jsmith/keys/mytest.pem > /home/jsmith/keys/mytest.pub
ssh-add -d /home/jsmith/keys/mytest.pub
Run Code Online (Sandbox Code Playgroud)

手册页还提到了“公钥”:“如果在给定路径中未找到公钥,则ssh-add将追加.pub并重试”。

  • 谢谢,这有效!虽然这看起来非常复杂 - 难道真的没有办法从你的 ssh 钥匙串中删除 pem 文件而不需要像这样跳过麻烦吗? (2认同)
  • 技术答案是[发送到 ssh 代理以删除密钥的命令](https://tools.ietf.org/id/draft-miller-ssh-agent-01.html#rfc.section.4.3) 标识其公共部分的密钥。可以从私钥文件的内容派生密钥的公共部分,但显然 ssh-add 程序不包含删除密钥时执行此操作的逻辑。 (2认同)