为什么GitHub推荐HTTPS而不是SSH?

为什么GitHub推荐HTTPS而不是SSH?,git,github,ssh,https,Git,Github,Ssh,Https,在GitHub站点上有一个链接 。。。它说 如果您决定不使用推荐的HTTPS方法,我们可以 使用SSH密钥在计算机之间建立安全连接 和GitHub。下面的步骤将引导您完成生成SSH的过程 密钥,然后将公钥添加到GitHub帐户 为什么HTTPS是推荐的方法?SSH方法中是否存在某种安全缺陷,还是速度较慢?我创建了一个SSH密钥,这样可以缓解任何安全问题吗?GitHub多次更改了他们的建议() 看来他们目前推荐HTTPS,因为它是最容易在最广泛的网络和平台上设置的,而且用户对所有这些都不熟悉 S

在GitHub站点上有一个链接

。。。它说

如果您决定不使用推荐的HTTPS方法,我们可以 使用SSH密钥在计算机之间建立安全连接 和GitHub。下面的步骤将引导您完成生成SSH的过程 密钥,然后将公钥添加到GitHub帐户


为什么HTTPS是推荐的方法?SSH方法中是否存在某种安全缺陷,还是速度较慢?我创建了一个SSH密钥,这样可以缓解任何安全问题吗?

GitHub多次更改了他们的建议()

看来他们目前推荐HTTPS,因为它是最容易在最广泛的网络和平台上设置的,而且用户对所有这些都不熟悉

SSH中没有固有的缺陷(如果存在缺陷,他们会禁用它)——在下面的链接中,您会看到它们也提供了有关SSH连接的详细信息:

  • HTTPS不太可能被防火墙阻止

    https://clone URL在所有存储库(公共和私有)上都可用。这些URL在任何地方都可以工作——即使您位于防火墙或代理之后

  • HTTPS连接允许
    credential.helper
    缓存密码

    好消息:凭证帮助器仅在克隆HTTPS时工作 回购网址。如果改用SSH repo URL,则SSH密钥用于 认证。虽然我们不推荐,但如果您希望使用此 方法,请参阅本指南以获取生成和使用SSH密钥的帮助

  • 另请参见:help.github.com上的官方答案

    编辑:

    使用SSH URL似乎不再需要对公共回购具有写访问权限,这使得我的原始解释无效

    原件:

    显然,支持HTTPS URL的主要原因是,如果您没有对公共repo的写访问权,SSH URL将无法与公共repo一起工作


    但是,在部署到生产服务器时,鼓励使用SSH URL—这里的上下文可能是Heroku之类的服务。

    要么您引用错误,要么github在不同的页面上有不同的建议,要么他们可能会随着时间的推移而学习并更新其记录

    我们强烈建议在与GitHub交互时使用SSH连接。SSH密钥是一种识别受信任计算机的方法,不涉及密码。下面的步骤将引导您生成SSH密钥,然后将公钥添加到GitHub帐户


    有人可能会认为,使用SSHs密钥进行身份验证的安全性较低,因为我们倾向于更定期地更改密码,而不是生成新的SSH密钥


    限制使用给定SSH密钥的寿命的服务器可以帮助用户定期刷新SSH密钥

    我认为GitHub推荐HTTPS有几个原因

  • 从任何地方访问存储库都比较简单,因为您只需要帐户详细信息(不需要SSH密钥)即可写入存储库

  • HTTPS是在所有防火墙中打开的端口。SSH并不总是作为与外部网络通信的端口打开

  • 因此,使用HTTPS比使用SSH更普遍地访问GitHub存储库

    在我看来,SSH密钥值得在创建它们时做一些额外的工作

  • SSH密钥不提供对GitHub帐户的访问,因此,如果密钥被盗,您的帐户不会被劫持

  • 在SSH密钥中使用强密钥短语可以限制任何误用,即使您的密钥被盗(在第一次破坏对计算机帐户的访问保护后)

  • 如果您的GitHub帐户凭据(用户名/密码)被盗,可以更改您的GitHub密码以阻止您访问,并且可以快速删除您的所有共享存储库

    如果私钥被盗,有人可以强制推送一个空存储库,并清除您拥有的每个存储库的所有更改历史记录,但不能更改您GitHub帐户中的任何内容。如果您有权访问您的GitHub帐户,那么尝试从该漏洞中恢复将更加容易

    我的首选是使用SSH和受密码保护的密钥。我对每台计算机都有不同的SSH密钥,所以如果该计算机被盗或密钥泄露,我可以快速登录到GitHub并删除该密钥以防止不必要的访问

    如果您所在的网络阻塞了SSH端口,则可以通过HTTPS对SSH进行隧道传输

    如果您使用HTTPS,我建议添加双因素身份验证,以保护您的帐户和存储库

    如果将HTTPS与工具(例如编辑器)一起使用,则应使用GitHub帐户中的开发者令牌,而不是在该工具配置中缓存用户名和密码。令牌可以减轻使用HTTPS的一些潜在风险,因为令牌可以配置为具有非常特定的访问权限,并且如果令牌被破坏,很容易被撤销。

    如果被防火墙阻止,则通过HTTPS启用SSH连接 测试是否可以通过HTTPS端口进行SSH,运行以下SSH命令:

    $ ssh -T -p 443 git@ssh.github.com
    Hi username! You've successfully authenticated, but GitHub does not
    provide shell access.
    
    如果这有效,那太好了!如果没有,您可能需要遵循我们的建议

    如果您能够SSH到
    git@ssh.github.com
    通过端口443,您可以覆盖SSH设置,强制通过该服务器和端口运行到GitHub的任何连接

    要在ssh配置中设置此选项,请在
    ~/.ssh/config
    处编辑文件,然后添加此部分:

    Host github.com
      Hostname ssh.github.com
      Port 443
    
    您可以通过再次连接GitHub来测试此功能是否有效:

    $ ssh -T git@github.com
    Hi username! You've successfully authenticated, but GitHub does not
    provide shell access.
    


    看,更少的配置可能意味着更容易。此外,一些劣质的操作系统在默认情况下甚至没有安装SSH客户端。对于发现此线程的未来用户:GitHub已经更改了他们的策略,现在说“我们强烈建议在与Gi交互时使用SSH连接