无法理解 Git SSH 密钥的注意事项

无法理解 Git SSH 密钥的注意事项

我正在我的 ubuntu 上为 Github 设置 Git,并决定使用 SSH 而不是 HTTPS 方式。因此,我处于创建 SSH 密钥的步骤(我的.ssh文件夹是空的)。现在,我在Github当我搜索为什么需要密码时。

使用 SSH 密钥,如果有人获得了您计算机的访问权,他们也获得了使用该密钥的每个系统的访问权。

这是什么意思?我打算只将此密钥用于 Github。

据我了解,这意味着如果我使用任何服务(Github 和其他一些服务)的 SSH 密钥,那么泄露密钥将导致访问通过此密钥连接的所有服务。对吗?

我其实对这gain access to every system that uses that key句话很困惑。我不太了解 SSH 密钥及其用途,但我会避免使用 HTTPS,因为每次连接时我都必须写入 Github PAT。

提前致谢。

答案1

是的,听起来是对的。窃取 SSH 密钥与窃取密码本质上没什么不同——如果有人发现你的SSH 私钥文件 (~/.ssh/id_rsa) 他们可以使用它来访问你的您已配置为接受该特定密钥的任何系统上的帐户。

但是,由于 SSH 密钥被认为比密码“更强大”,因此更有可能有人会生成一次密钥对并使用相同的密钥对到处,几十年来。

(SSH 不仅适用于 Git,几乎所有非 Windows 系统,甚至一些 Windows 系统也都使用 SSH 进行远程管理。尽管至少有人对密码现在可以重复使用,可能很多系统管理员或开发人员使用相同的密钥对来访问他们的 GitHub、他们的工作服务器以及他们的家用 PC/NAS/RPi。)

这通常使 SSH 密钥对成为比密码更有价值的目标,并且已经发生过各种恶意软件窃取 ~/.ssh 的事件(此外还窃取 wallet.dat 等)。因此需要采取预防措施。

因此密码只是用来加密磁盘上的私钥文件(就像密码管理器应用程序有一个“主密码”来加密密码数据库一样)。这不是强制性的——您决定风险是否可以接受——但强烈建议这样做。由于加密完全是本地的,您可以随时使用 更改(或添加/删除)密码ssh-keygen -p,而无需生成新密钥。

(此外,如果你使用的是 Ubuntu 的完整桌面版本(即不是 WSL),你很可能已经ssh 代理通过 GNOME Keyring 自动设置,它将记住受您保护的“密钥环”中的 SSH 密钥密码系统密码。这也存在一些风险(任何应用程序可以读取密钥环) 但至少它确实将文件加密保存在磁盘上,从而保护它,例如如果它在被盗的笔记本电脑上,同时仍然为您提供无密码登录的便利。)

相关内容