在我的 dotfiles 公共仓库中安全地拥有“id_rsa.pub”文件

gre*_*uan 6 security ssh

所以这是我想知道的,我怎么能在我的 dotfiles GitHub 存储库中拥有这个文件?

我厌倦了每次在新计算机上或重新安装操作系统等时都必须生成新的 SSH 密钥。

那么最好的方法是什么?我想在密钥生成时为文件分配一个密码就足够了?那应该对其进行加密或使其在没有它的情况下无法使用。这够好吗?

如果没有,有没有办法加密文件,这样我就可以放心地将它安全地上传到 Internet,而且可以随时使用正确的密码使用它?

Cel*_*ada 8

id_rsa.pub是公钥,根本不需要保护。事实上,它需要发布才能工作。我假设您id_rsa在这个问题中实际上是在谈论(私钥)。

您当然不必每次在新计算机上或重新安装操作系统时都生成新的 SSH 密钥。您可以将该文件从一台计算机复制到另一台计算机。或者,如果您暂时在另一台不想存储密钥的计算机上,您可以远程登录到存储密钥的计算机,然后使用 将密钥ssh -A加载到本地代理中ssh-add。(只有在您信任临时使用的计算机上的 root 时才应该这样做。)

您还应该已经在 SSH 密钥上设置了密码(如果没有,请立即添加,或者更好的是,考虑密钥已泄露并替换它!),否则任何人甚至可以短暂访问密钥所在的计算机存储将可以访问它。

如果将文件从一台计算机手动复制到另一台计算机对您来说不方便,您可以将 SSH 密钥存储在云中(github 或其他方式)。就个人而言,我宁愿不这样做。

我假设您打算为此目的使用私有 github 存储库。尽管带有密码的 SSH 密钥对于没有密码的任何人来说都是无用的,但您仍然应该将加密的密钥留给自己,以防有人获得您的密码。

编辑:更多分享id_rsa

即使id_rsa对于没有随附密码的任何人都无法使用,您仍然不应该分享它。

可以将 SSH 密钥视为某种形式的双因素身份验证。该id_rsa文件是你拥有的东西。密码是你知道的东西。只有在一起才有用。我说“有点像”是因为您实际上并不像id_rsa使用真正的 2 因素身份验证系统的“Something You Have”组件那样随身携带文件。

不共享id_rsa文件可提供一些保护,以防您的密码被泄露给其他人。如果发生这种情况,您绝对应该撤销密钥,但至少有可能攻击者如果无法获得id_rsa.