此bounty已结束。回答此问题可获得+100声望奖励。赏金宽限期7小时后结束。Colonel Panic正在寻找一个规范答案。
git clone支持HTTPS和SSH远程URL。我应该用哪个?各自的优势是什么?
GitHub的文档don't make a recommendation。我记得在2013年的GitHub used to recommend SSH(存档链接)。为什么会这样?
此bounty已结束。回答此问题可获得+100声望奖励。赏金宽限期7小时后结束。Colonel Panic正在寻找一个规范答案。
git clone支持HTTPS和SSH远程URL。我应该用哪个?各自的优势是什么?
GitHub的文档don't make a recommendation。我记得在2013年的GitHub used to recommend SSH(存档链接)。为什么会这样?
7条答案
按热度按时间vvppvyoh1#
GitHub已经多次更改了他们的建议(example)。
看来他们目前推荐HTTPS,因为它是最容易在最广泛的网络和平台上设置的,并且是由新用户设置的。
SSH没有固有的缺陷(如果有,他们会禁用它)-在下面的链接中,您将看到他们仍然提供有关SSH连接的详细信息:
https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls
https://
克隆URL可用于所有存储库,无论可见性如何。https://
克隆URL即使在防火墙或代理服务器后面也可以工作。credential.helper
缓存您的密码。https://docs.github.com/en/get-started/quickstart/set-up-git#connecting-over-https-recommended
如果您使用HTTPS克隆,则可以使用凭据帮助程序在Git中缓存您的GitHub凭据。有关详细信息,请参阅“使用HTTPS URL克隆”和“Caching your GitHub credentials in Git.”
vcirk6k62#
我假设GitHub推荐HTTPS有几个原因
1.从任何地方访问存储库都更简单,因为您只需要您的帐户详细信息(不需要SSH密钥)即可写入存储库。
因此,使用HTTPS比SSH更容易访问GitHub存储库。
在我看来,SSH密钥值得在创建它们时做一些额外的工作
1.在SSH密钥中使用强关键词可以限制任何滥用,即使您的密钥被盗(在首次破坏对计算机帐户的访问保护之后)
如果您的GitHub帐户凭据(用户名/密码)被盗,可以更改您的GitHub密码以阻止您访问,并且可以快速删除所有共享存储库。
如果私钥被盗,有人可以强制推送一个空的存储库,并清除您拥有的每个存储库的所有更改历史,但无法更改您的GitHub帐户中的任何内容。如果你可以访问你的GitHub帐户,尝试从这个漏洞中恢复会容易得多。
我的首选是使用SSH和密码保护的密钥。我为每台计算机都有一个不同的SSH密钥,所以如果那台机器被盗或密钥泄露,我可以快速登录到GitHub并删除该密钥以防止不必要的访问。
如果您所在的网络阻塞了SSH端口,则SSH可以通过HTTPS进行隧道传输。
https://help.github.com/articles/using-ssh-over-the-https-port/
如果您使用HTTPS,我建议您添加双因素身份验证,以保护您的帐户和存储库。
如果您使用HTTPS与工具(例如编辑器),您应该使用GitHub帐户中的开发人员令牌,而不是在该工具配置中缓存用户名和密码。令牌可以减轻使用HTTPS的一些潜在风险,因为令牌可以配置为非常特定的访问权限,并且如果该令牌被泄露,则可以轻松撤销。
m4pnthwp3#
要么你引用错了,要么github在不同的页面上有不同的推荐,或者他们可能会随着时间的推移而学习并更新他们的reco。
https://help.github.com/articles/generating-ssh-keys
gj3fmq9x4#
推荐:使用带有 OAuth credential helper 的HTTPS,如Git Credential Manager或git-credential-oauth。
没有更多的密码或个人访问令牌!第一次推送时,助手将打开一个浏览器窗口进行身份验证。在存储寿命内的后续推送不需要交互。
SSH的缺点:
HTTPS的优势:
waxmsbnn5#
使用SSH密钥进行身份验证的安全性可能会降低,因为我们更倾向于定期更改密码,而不是生成新的SSH密钥。
服务器限制了它们将荣誉给定SSH密钥的寿命,这有助于强制用户定期刷新SSH密钥。
azpvetkf6#
支持HTTPS的另一个原因是,如果多个用户在一个中央服务器上管理代码--比如一台开发机器--每个用户都需要创建自己的ssh密钥,以便使用基于SSH的连接。如果连接是HTTPS,则不存在此问题。
我猜你可能会争辩说,设置自己的密钥并不是很难,只是使用存储项目的服务器的一部分,但这是完成工作的另一个障碍。
sy5wg1nm7#
Git对此没有“官方”建议,但每个Git远程主机都有自己的首选项。
例如,GitHub网站和GitHub CLI都是default to HTTPS,以“更好的互操作性和易用性”。另一方面,GitLab在其文档中推荐SSH。
这两种方法各有优缺点:
由于各种原因,这些建议在过去几年中发生了变化。