首页 文章

为什么GitHub推荐使用SSH over SSH?

提问于
浏览
252

在GitHub网站上有一个链接......

https://help.github.com/articles/generating-ssh-keys

......它说......

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

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

7 回答

  • 21

    要么你引用错误,要么github在不同的页面上有不同的推荐,或者他们可能会随着时间的推移学习并更新他们的回复 .

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

    https://help.github.com/articles/generating-ssh-keys

  • 10

    GitHub多次改变他们的推荐(example) .

    看起来他们目前推荐使用HTTPS,因为它最容易在最广泛的网络和平台上进行设置,并且对于所有这些人都是新用户 .

    SSH中没有固有的缺陷(如果它们禁用它) - 在下面的链接中,您将看到它们仍然提供有关SSH连接的详细信息:

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

    https://help.github.com/articles/which-remote-url-should-i-use/

    https://克隆URL可在所有存储库(公共和私有)上使用 . 这些URL可以在任何地方使用 - 即使您位于防火墙或代理之后 .

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

    https://help.github.com/articles/set-up-git

    要知道:凭证助手仅在克隆HTTPS回购URL时有效 . 如果您使用SSH repo URL,则使用SSH密钥进行身份验证 . 虽然我们不建议使用此方法,但如果您希望使用此方法,请查看本指南以获取有关生成和使用SSH密钥的帮助 .

  • 141

    Github推荐使用HTTPS,因为它是一个在所有防火墙中都打开的端口 . SSH并不总是作为网络通信端口打开,并且经常被网络防火墙阻止 .

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

    SSH密钥更安全,因为它们不提供对您的Github帐户的访问权限,但如果有人确实获取了您的私钥,他们可以强制推送空存储库并清除您的更改历史记录 .

    我的偏好是使用带密码保护密钥的SSH . 如果您所在的网络阻止SSH端口,则可以通过HTTPS进行隧道连接 .

    https://help.github.com/articles/using-ssh-over-the-https-port/

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

  • 3

    另见:help.github.com上的官方Which remote URL should I use?答案 .

    EDIT:

    似乎不再需要对公共存储库进行写访问以使用SSH URL,这使得我的原始解释无效 .

    ORIGINAL:

    显然,支持HTTPS URL的主要原因是,如果您没有对该repo的写入权限,则SSH URL将无法与公共存储库一起使用 .

    鼓励使用SSH URL部署到 生产环境 服务器,但是 - 这里的上下文可能是像Heroku这样的服务 .

  • 8

    如果被防火墙阻止,则通过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.
    

    如果那样有效,太好了!如果没有,您可能需要关注我们的troubleshooting guide .

    如果您能够通过端口 443 SSH到 git@ssh.github.com ,则可以覆盖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.
    

    Authenticating to GitHub / Using SSH over the HTTPS port

  • 0

    可以说使用SSH密钥进行身份验证的安全性较低,因为我们倾向于更频繁地更改密码,而不是生成新的SSH密钥 .

    限制使用SSH密钥的生命周期的服务器可以帮助强制用户定期刷新SSH密钥 .

  • -2

    也许是因为从你的大脑中窃取密码然后从你的计算机窃取密钥文件更难(至少据我所知,可能已经存在某些物质或方法,但这是一个无限的讨论)?如果您使用密码保护密钥,那么您再次使用密码并出现相同的问题(但有些人可能会说您需要做更多工作,因为您需要获取密钥然后破解密码) .

相关问题