当前位置:  开发笔记 > 前端 > 正文

如何从ssh-agent中提取私钥?

如何解决《如何从ssh-agent中提取私钥?》经验,为你挑选了1个好方法。

ssh-add -l 显示我有3个RSA密钥添加到我的SSH代理.

ssh-add -L 显示那些公钥.

如何获取私钥,以便将其保存到文件中?或者这是不可能的?它是如何工作的呢?

是否可以要求ssh-agent使用私钥进行操作?我怎么能让它为我加密/解密一个号码?

我必须为此编写代码(编程语言并不重要),但我更喜欢使用现有工具或库.



1> pts..:

使用ssh和ssh-agent之间的协议获取私钥或执行加密是不可能的,但是可以通过转储ssh-agent的内存来获取私钥.在Linux上,你必须是root用户才能进行内存转储.

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

代理的一个更聪明的方面是如何在不向任何人泄露私钥的情况下验证用户的身份(或更准确地说,拥有私钥).

代理转发的一个安全优势是用户的私钥永远不会出现在远程系统或线路上,即使是加密形式.

因此,SSH客户端和ssh-agent之间的协议在SSH1或SSH2中无法从ssh-agent中获取私钥.

但是,作为root,您可以获取ssh-agent的内存转储,并尝试从那里提取私钥.https://blog.netspi.com/stealing-unencrypted-ssh-agent-keys-from-memory正是如此,并且该页面的评论部分提到了其他软件.但是,该页面上的软件在Debian破坏程序上对我不起作用:内存转储不包含任何密钥,即使ssh-add -l已显示RSA密钥.


问题的答案:不,这是不可能的.在链接文档中列出了什么可能的lis,而这个不是.
这不是问题的真正答案 - 即,是否有任何方法可以向ssh-agent询问其解密密钥,例如将它们提供给其他不知道如何使用ssh-agent的SSH客户端.
相反,_everything_在虚拟世界中是可能的,它只取决于实现目标的时间和精力.例如,这是您从ssh-agent中提取/窃取密钥的方法:https://blog.netspi.com/stealing-unencrypted-ssh-agent-keys-from-memory/
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有