向 GitHub 添加 SSH 密钥的目的是什么?

问题描述 投票:0回答:4

我正在阅读一本让我生成 SSH 密钥并将其添加到 GitHub 的书。完成此操作后,本书简单地指出我们已准备好创建一个存储库并将我们的代码推送上去。我很困惑,因为我从来不需要这样做来提升我的代码。那么这有什么目的呢?

git github ssh
4个回答
4
投票

生成的 ssh 密钥可以让 github 验证您是推送代码的人,而不是其他可能是恶意的或其他人。它们比手动输入用户名/密码更方便、更安全。我不确定您以前如何使用 github,但 SSH 密钥是保护您的存储库的最佳实践方法,因此我建议您将来继续使用此密钥。


3
投票

密钥基本上是解耦的密码。通常,密码和帐户之间存在一对一的映射:每个帐户只有一个密码,并且每个密码都(或者更确切地说应该)与一个帐户一起使用。

但是,任意数量的密钥可以与单个帐户关联。这意味着您可以通过个人计算机、工作计算机、手机、平板电脑等采用不同的方式来验证自己的身份。如果这些密钥中的任何一个被泄露,您可以使其失效,而不会影响其他密钥。

这还允许更安全的帐户共享:多个维护者都可以拥有自己的密钥来为共享存储库做出贡献。


0
投票

强烈建议使用 SSH 密钥。每个用户都有一个私钥和公钥,私钥保留在用于访问远程系统的系统上,并用于解密在 SSH 协议中交换的信息。公钥用于加密可共享的信息,供用户和远程服务器使用。


0
投票

老问题,但在停止开发 8 年之后,我正在查找有关 git access 的最新信息,所以我想我可以为后代回答。

这里有一个很长的描述:[https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols][1]

简而言之,您可以通过一些协议(传输通道,如果您愿意的话)访问存储库中的文件:HTTPS、git 和 ssh。

HTTPS需要用户名/密码(“u/p”),但安全存储这些是一个问题。如果操作系统提供安全存储,则可以使用它。例如,GitHub Desktop Client 将您的 u/p 存储在 Mac OS 提供的 Keychain 安全存储中。这就是为什么每次通过客户端应用程序与 Github 上的存储库交互时都不必输入 u/p:它从 Keychain 读取 u/p。您可能会问,为什么存储 u/p 是个问题,但通过 https 发送却不是?由于末尾有“s” - 服务器必须提供有效的安全证书,然后 git 应用程序才会尝试通过网络发送您的 u/p。

ssh 协议不支持匿名请求,就这样。所以它总是需要一个密钥来加密数据。由于书呆子创建了 github,他们经常使用 ssh,所以这是默认推荐的方式 =) 哈哈,但说真的,一旦你稍微使用 ssh,你就会发现它更容易,而且不需要安装任何应用程序。 “看,妈妈,我只使用终端,没有图形用户界面”是我们都渴望有一天能说的话。我认为。因此,当您远程访问服务器并需要在那里克隆存储库时,它非常有用。为什么 ssh 总是加密?好吧,例如,您可能有一个受感染的路由器,它实际上可以将恶意代码注入到通过它的文件中。所以你会克隆存储库,尝试运行应用程序和 BAM,你的计算机是僵尸。

git 协议 git 的自定义协议实际上只用于以很少的开销提供文件,因为它不使用加密。因此,可以将其视为没有安全性的只读 ssh。您无法通过此协议推送到存储库,因为同样没有身份验证/安全性。这不是一个供公共使用的协议,基本上你可以忘记它的存在并且永远不要使用它(永远不要在你的存储库名称前面输入 git://,例如 git clone git://lala/some_repo.git)

我希望5年后这个答案对某人有用^_^

© www.soinside.com 2019 - 2024. All rights reserved.