显示 ssh 私钥的安全问题

Lea*_*rtS 14 security ssh bash private-key

我犯了一个巨大的错误,或者至少我认为我犯了:我“猫”了我的私人 SSH 密钥

cat ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

我现在担心我创建了一个安全漏洞,允许其他用户通过查看 bash/scrollback 历史记录或使用其他方法来查看我的私钥。所以,我的问题:

  1. 我真的损害了 SSH 密钥对的安全性吗?
  2. 是否有“足够安全”的修补方法,不包括创建新密钥对的明显(和最安全)方法?

(注意:我是这台机器的唯一用户,所以我实际上并不关心我的具体情况,但我认为这将是一个有趣的问题。)

use*_*686 20

如果你私下这样做,没有问题。想一想——无论如何,您只是在屏幕上显示了已经存储在硬盘上的完全相同的数据。如果有人可以访问您的回滚或历史记录,他们也可以id_rsa直接读取文件。

  • 此外,你的 shell 的历史——即使它对其他用户是可读的(它不是)——只包含命令,而不包含它们的输出。所以它所拥有的只是一条线cat ~/.ssh/id_rsa

  • 对于大多数终端,回滚历史完全存储在内存中。(基于 libvte 的终端有时会使用 /tmp 中的后备文件,但它要么是tmpfs,要么与您的 ~/.ssh 位于同一磁盘中,无论如何......)所以一旦您关闭终端,它就变得无关紧要了。当然,无论哪种方式,它都只对您开放。

  • 而且很多时候,私钥本身是用密码加密的,除非你在ssh要求时解密它,否则无法使用。

当然,除非您在高分辨率安全摄像头存在的情况下执行此操作,或者甚至完全允许某人为您的终端窗口拍照。在这种情况下,有人可以从照片中重新键入密钥,唯一保护它的就是加密密码。