为什么GitHub推荐通过SSH的HTTPS?

在GitHub网站上有一个链接…

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

…它说…

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

为什么HTTPS是推荐的方法? SSH方法存在某种安全漏洞,还是比较慢? 我创build了一个SSH密钥,这样可以缓解任何安全问题?

GitHub多次改变了他们的build议( 例子 )。

看来他们目前推荐使用HTTPS,因为它是在最广泛的networking和平台上build立的最简单的方式,也是所有这些新用户的最佳select。

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

  1. HTTPS不太可能被防火墙阻挡。

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

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

  2. HTTPS连接允许credential.helpercaching您的密码。

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

    相关提示:凭证帮助程序仅在克隆HTTPS回购url时有效。 如果使用SSH repo URL,则使用SSH密钥进行身份validation。 虽然我们不build议这样做,但是如果您希望使用此方法,请参阅本指南以获取有关使用SSH密钥的帮助。

无论你是引用错误还是github在不同的页面上有不同的推荐,或者他们可能会随时间学习并更新他们的推荐。

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

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

Githubbuild议使用HTTPS,因为它的端口在所有防火墙中都是开放的。 SSH并不总是作为networking通信的端口打开,而且经常被networking防火墙阻止。

因此,Github存储库使用HTTPS比SSH更普遍。

SSH密钥更安全,因为它们不提供对Github帐户的访问权限,但是如果某人确实获得了您的私钥,则可以强制推送一个空的存储库并清除您的更改历史logging。

我的首选是使用SSH与密码保护密钥。 如果您所在的networking阻塞了SSH端口,则SSH可以通过HTTPS隧道传输。

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

如果您使用HTTPS,我会build议添加双因素身份validation,以保护您的帐户以及您的存储库。

另请参阅:官方应该使用哪个远程URL? 回答help.github.com。

编辑:

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

原版的:

显然,支持HTTPS URL的主要原因是,如果您没有对该回购的写入访问权限,则SSH URL不能与公共回购协议一起使用。

鼓励使用SSH URL来部署到生产服务器,但大概这里的环境是像Heroku这样的服务。

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

有可能争辩说,使用SSH密钥进行身份validation的安全性较低,因为我们倾向于更周期地更改密码,而不是生成新的SSH密钥。

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