[英]On Windows 10 that is well configured with native OpenSSH's ssh-agent, how to have an implementation of git use the ssh-agent configured?
[英]Where does Windows OpenSSH ssh-agent service secretly store private keys
获得了包含 ssh-agent 功能的 Windows10 Pro 附加功能“OpenSSH-Client”。 可以使用 ssh-add 将密钥添加到代理。 令我惊讶的是,这个 Windows 实现似乎将这些私钥存储在磁盘上 - 标准 ssh-agent 只会将它们存储在 RAM 中。 试试这个:
ssh-add <private key from thumbdrive>
## remove thumbdrive
## stop ssh-agent service
## start ssh-agent service
ssh-add -l
而且,你瞧,钥匙还在; 即使重新启动也不会擦除它们!
所以现在我非常非常安全的私钥在系统磁盘的某个地方。 如何擦除它们以及可能仍在磁盘上的任何遗物? 有谁知道这些保存的位置?
顺便提一句。 就个人而言,我发现这是对原始 OpenSSH ssh-agent 的不良功能扩展
好的,回答我自己的问题:
Short awnser: ssh-add -D
将删除密钥.... 有点。
密钥存储在 HKCU\Software\OpenSSH\Agent\Keys 下的注册表中。 从https://github.com/PowerShell/openssh-portable/releases/tag/v8.1.0.0文件contrib/win32/win32compat/ssh-agent/keyagent-request.c
从好的方面来说,这个实现在存储密钥的私有部分使用了 DPAPI。 另一方面,如果有正确的权限,ImpersonateLoggedOnUser 可以用来解密这个存储的密钥。
遗憾的是,这个实现没有使用原始的严格删除方法( BN_clear_free
)——一个简单的RegDeleteTreeA
就足够了。 因此,对于真正的删除,需要修改 ntuser.dat.log。 磁盘上私钥的实际存储与原始手册页不兼容:
The agent initially does not have any private keys.
总而言之:虽然叫同名,却是截然不同的东西。 关于使用这个 ssh-agent 实现的一些警告:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.