在GitHub站点上有一个链接...
https://help.github.com/articles/generating-ssh-keys
...它说...
如果您决定不使用推荐的HTTPS方法,我们可以使用SSH密钥在您的计算机和GitHub之间建立安全连接。以下步骤将引导您生成SSH密钥,然后将公共密钥添加到您的GitHub帐户。
为什么推荐使用HTTPS?SSH方法中是否存在某种安全漏洞?还是速度较慢?我创建了SSH密钥,这样可以缓解任何安全问题吗?
在GitHub站点上有一个链接...
https://help.github.com/articles/generating-ssh-keys
...它说...
如果您决定不使用推荐的HTTPS方法,我们可以使用SSH密钥在您的计算机和GitHub之间建立安全连接。以下步骤将引导您生成SSH密钥,然后将公共密钥添加到您的GitHub帐户。
为什么推荐使用HTTPS?SSH方法中是否存在某种安全漏洞?还是速度较慢?我创建了SSH密钥,这样可以缓解任何安全问题吗?
Answers:
GitHub多次更改了建议(例如)。
看来他们目前推荐使用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存储库URL,则使用SSH密钥进行身份验证。虽然我们不建议您这样做,但是如果您希望使用此方法,请查阅本指南以获取有关生成和使用SSH密钥的帮助。
ssh-agent
?很公平。谢谢!
我认为GitHub推荐使用HTTPS的原因有很多
1)在任何地方使用都更简单,因为您只需要您的帐户详细信息(不需要SSH密钥)
2)HTTPS是在所有防火墙中打开的端口。SSH并不总是作为与外部网络通信的端口而开放
因此,使用HTTPS比使用SSH可以更广泛地访问GitHub存储库。
在我看来,SSH密钥值得在创建它们方面进行一些额外的工作
1)SSH密钥不提供对GitHub帐户的访问权限,因此,如果密钥被盗,则无法劫持您的帐户,
2)对您的SSH密钥使用强密钥短语可以限制任何误用,即使您的密钥被盗了
如果您的GitHub帐户凭据(用户名/密码)被盗,则可以更改GitHub密码以阻止您访问,并且可以快速删除所有共享存储库。
如果私钥被盗,则有人可以强行推动一个空的存储库并清除您拥有的每个存储库的所有更改历史记录,但无法更改GitHub帐户中的任何内容。如果您可以访问自己的GitHub帐户,那么尝试从这种违反情况中恢复将更加容易。
我的首选是将SSH与密码保护的密钥一起使用。我为每台计算机使用了不同的SSH密钥,因此,如果该计算机被盗或密钥被盗用,我可以快速登录GitHub并删除该密钥以防止不必要的访问。
如果您所在的网络阻塞了SSH端口,则可以通过HTTPS建立SSH隧道。
https://help.github.com/articles/using-ssh-over-the-https-port/
如果您使用HTTPS,建议您添加两因素身份验证,以保护您的帐户和存储库。
如果将HTTPS与工具(例如,编辑器)一起使用,则应使用GitHub帐户中的开发人员令牌,而不是在该工具配置中缓存用户名和密码。
要么您引用的是错误的,要么github在不同的页面上有不同的建议,否则他们可能会随着时间的推移而学习并更新他们的记录。
与GitHub互动时,我们强烈建议使用SSH连接。SSH密钥是一种无需信任密码即可识别受信任计算机的方法。以下步骤将引导您生成SSH密钥,然后将公共密钥添加到您的GitHub帐户。
测试是否可以通过HTTPS端口进行SSH,请运行以下SSH命令:
$ ssh -T -p 443 git@ssh.github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.
如果可行,那就太好了!如果没有,您可能需要遵循我们的故障排除指南。
如果您能够git@ssh.github.com
通过端口SSH进入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.
另请参见:官方应该使用哪个远程URL?在help.github.com上回答。
编辑:
似乎不再必须具有对公共存储库的写访问权才能使用SSH URL,从而使我的原始解释无效。
原版的:
显然,支持HTTPS URL的主要原因是,如果您没有对该公共存储库的写访问权,则SSH URL将无法与该公共存储库一起使用。
鼓励使用SSH URL部署到生产服务器,但是-大概这里的上下文是诸如Heroku之类的服务。
可能会争辩说,使用SSH密钥进行身份验证的安全性较差,因为与生成新的SSH密钥相比,我们倾向于更定期地更改密码。
限制SSH密钥寿命的服务器可以帮助迫使用户进行定期刷新SSH密钥的实践。