ssh-add -l 显示我在SSH代理中添加了3个RSA键。

ssh-add -L 显示那些公共钥匙。

我如何获得私钥,以便将它们保存到文件中?还是通过设计是不可能的?那么它如何工作?

可以要求SSH代理使用私钥进行操作吗?我该如何要求它为我加密/解密数字?

可以为此编写代码(编程语言没关系)是可以的,但是我更喜欢使用现有工具或库。

有帮助吗?

解决方案

不可能使用SSH和SSH-Agent之间的协议获得私钥或执行加密,但是可以通过倾倒SSH-Agent的内存来获取私钥。在Linux上,您必须扎根才能进行内存转储。

我刚刚找到了关于SSH-Agent如何工作的很好的解释: http://www.unixwiz.net/techtips/ssh-agent-forwarding.html 。这部分回答了我的一些问题。

  • 代理商的最聪明方面之一是,它如何验证用户的身份(或更确切地说是拥有私钥的拥有),而无需向任何人透露该私钥。

  • 代理转发的安全好处之一是,即使以加密形式,用户的私钥也永远不会出现在远程系统或电线上。

因此,SSH客户端和SSH-Agent之间的协议在SSH1或SSH2中无法从SSH-Antent中删除私钥。

但是,作为root,您可以获得SSH-Agent的内存转储,并尝试从那里提取私钥。 https://blog.netspi.com/stealing-unencrypted-ssh-agent-keys-from-memory 确实做到这一点,并且该页面的评论部分中提到了其他软件。但是,该页面上的软件在Debian Buster上对我不起作用:内存转储没有任何钥匙,即使 ssh-add -l 已显示一个RSA键。

其他提示

就我而言,我不小心删除了.ssh文件夹,但我的键已加载。但是,由于我无法从SSH-ADD中恢复它们,因此我必须使用文件恢复软件。

您可能不需要。您很可能只想要一个公钥:

ssh-add -L > ~/.ssh/id_rsa.pub
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top