在GitHub网站上有一个链接。..
https://web.archive.org/web/20130114042103/https://help.github.com/articles/generating-ssh-keys
……上面说。..
如果您决定不使用推荐的HTTPS方法,我们可以使用SSH密钥在您的计算机和GitHub之间建立安全连接。下面的步骤将引导您生成SSH密钥,然后将公钥添加到您的GitHub帐户。
为什么HTTPS是推荐的方法?SSH方法中是否存在某种安全漏洞或速度较慢?我创建了一个SSH密钥,这会减轻任何安全问题吗?
8条答案
按热度按时间xlpyo6sf1#
GitHub已经多次更改了他们的建议(example)。
看来他们目前推荐HTTPS,因为它是最容易在最广泛的网络和平台上设置的,并且由新手使用。
SSH没有固有的缺陷(如果有,他们会禁用它)-在下面的链接中,您将看到他们仍然提供有关SSH连接的详细信息:
www.example. com
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.”
5lwkijsr2#
我假设GitHub出于几个原因推荐HTTPS
1.从任何地方访问存储库都更简单,因为您只需要您的帐户详细信息(不需要SSH密钥)即可写入存储库。
因此,使用HTTPS比SSH更容易访问GitHub存储库。
在我看来,SSH密钥值得在创建它们时做一些额外的工作
1.在SSH密钥中使用强关键短语可以限制任何滥用,即使密钥被盗(在首次破坏对计算机帐户的访问保护之后)
如果您的GitHub帐户凭据(用户名/密码)被盗,可以更改您的GitHub密码以阻止您访问,并且可以快速删除所有共享存储库。
如果私钥被盗,有人可以强制推送一个空的存储库,并清除您拥有的每个存储库的所有更改历史,但无法更改您的GitHub帐户中的任何内容。如果你可以访问你的GitHub帐户,尝试从这个漏洞中恢复会容易得多。
我的首选是使用SSH和密码保护的密钥。我为每台计算机都有一个不同的SSH密钥,所以如果那台机器被盗或密钥泄露,我可以快速登录到GitHub并删除该密钥以防止不必要的访问。
如果您所在的网络阻止SSH端口,则可以通过HTTPS隧道传输SSH。
https://help.github.com/articles/using-ssh-over-the-https-port/
如果您使用HTTPS,我建议您添加双因素身份验证,以保护您的帐户和存储库。
如果您使用HTTPS与工具(e.g编辑器),您应该使用GitHub帐户中的开发人员令牌,而不是在该工具配置中缓存用户名和密码。令牌可以减轻使用HTTPS的一些潜在风险,因为令牌可以配置为非常特定的访问权限,并且如果该令牌被泄露,则可以轻松撤销。
relj7zay3#
要么你引用错了,要么github在不同的页面上有不同的推荐,或者他们可能会随着时间的推移而学习并更新他们的reco。
https://help.github.com/articles/generating-ssh-keys
omqzjyyz4#
防火墙阻止时启用HTTPS SSH连接
测试通过HTTPS端口的SSH是否可行,运行以下SSH命令:
如果这起作用,太好了!如果没有,您可能需要遵循我们的troubleshooting guide。
如果您能够通过443端口SSH到
git@ssh.github.com
,则可以覆盖SSH设置,强制任何到GitHub的连接通过该服务器和端口运行。要在ssh配置中设置此设置,请编辑
~/.ssh/config
中的文件,并添加以下部分:你可以通过再次连接到GitHub来测试这是否有效:
从Authenticating to GitHub / Using SSH over the HTTPS port
t3irkdon5#
另请参阅:帮助上的官方Which remote URL should I use?答案。github.com.
编辑:
看起来,使用SSH URL不再需要对公共存储库具有写访问权限,这使得我最初的解释无效。
ORIGINAL:
显然,支持HTTPS URL的主要原因是,如果你没有对公共存储库的写权限,SSH URL将无法与该存储库一起工作。
然而,在部署到生产服务器时,鼓励使用SSH URL--这里的上下文大概是Heroku这样的服务。
7xllpg7q6#
使用SSH密钥进行身份验证的安全性可能会降低,因为我们更倾向于定期更改密码,而不是生成新的SSH密钥。
服务器限制了它们将荣誉给定SSH密钥的寿命,这有助于强制用户定期刷新SSH密钥。
7jmck4yq7#
支持HTTPS的另一个原因是,如果多个用户在一个中央服务器上管理代码--比如一台开发机器--每个用户都需要创建自己的ssh密钥,以便使用基于SSH的连接。如果连接是HTTPS,则不存在此问题。
我猜你可能会争辩说,设置自己的密钥并不是很难,只是使用存储项目的服务器的一部分,但这是完成工作的另一个障碍。
9fkzdhlc8#
推荐:使用带有 * 凭证生成帮助程序 * 的HTTPS,如Git Credential Manager或git-credential-oauth。
没有更多的密码或个人访问令牌!第一次推送时,助手将打开一个浏览器窗口进行身份验证。在存储寿命内的后续推送不需要交互。
SSH的缺点:
HTTPS的优势: