我犯了一个大错误,或者至少我认为我犯了一个大错误:我把我的 SSH 私钥“偷走了”。
cat ~/.ssh/id_rsa
我现在担心自己造成了一个安全漏洞,其他用户可以通过查看 bash/scrollback 历史记录或使用其他方法查看我的私钥。因此,我的问题是:
- 我是否真的危及了我的 SSH 密钥对的安全性?
- 除了明显的(也是最安全的)创建新密钥对的方法之外,是否存在“足够安全”的修补方法?
(注意:我是该机器的唯一用户,因此我实际上并不太关心我的具体情况,但我认为这是一个有趣的问题。)
答案1
如果你私下这样做,那就没问题了。想想看——你只是在屏幕上显示了与硬盘上已经存储的数据完全相同的数据。如果有人可以访问你的回滚或历史记录,他们也可以id_rsa
直接读取文件。
cat ~/.ssh/id_rsa
此外,即使其他用户可以读取您的 shell 历史记录(但实际上并非如此),它仅包含命令,而不包含其输出。因此,它里面只有一行。对于大多数终端来说,回滚历史记录完全存储在内存中。(基于 libvte 的终端有时使用 /tmp 中的备份文件,但这要么是临时文件或者位于与您的 ~/.ssh 相同的磁盘中……)因此,一旦您关闭终端,它就变得无关紧要了。当然,无论哪种方式,只有您才能访问它。
并且很多时候,私钥本身是用密码加密的,除非你在
ssh
要求时解密,否则无法使用。
当然,除非你在高分辨率安全摄像头面前这样做,或者甚至直接允许某人拍摄你的终端窗口。在这种情况下,有人可以根据照片重新输入密钥,而保护它的唯一方法就是加密密码。