ssh-add -l
显示我有3个RSA密钥添加到我的SSH代理.
ssh-add -L
显示那些公钥.
如何获取私钥,以便将其保存到文件中?或者这是不可能的?它是如何工作的呢?
是否可以要求ssh-agent使用私钥进行操作?我怎么能让它为我加密/解密一个号码?
我必须为此编写代码(编程语言并不重要),但我更喜欢使用现有工具或库.
使用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密钥.