当前位置: 首页 > 知识库问答 >
问题:

为什么GitHub推荐HTTPS而不是SSH?

陈项禹
2023-03-14

在GitHub站点上有一个链接。。。

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

... 它说。。。

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

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

共有3个答案

温凯
2023-03-14

要么你引用错误,要么github在不同的页面上有不同的建议,要么他们可能会随着时间的推移而学习并更新他们的记录。

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

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

赵英范
2023-03-14

我认为GitHub推荐HTTPS有几个原因

>

HTTPS是在所有防火墙中打开的端口。SSH并不总是作为与外部网络通信的端口打开

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

在我看来,SSH密钥值得在创建它们时做一些额外的工作

>

  • SSH密钥不提供对GitHub帐户的访问,因此如果密钥被盗,您的帐户无法被劫持。

    使用强大的关键字与您的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帐户中的开发者令牌,而不是在该工具配置中缓存用户名和密码。令牌将减轻使用HTTPS的一些潜在风险,因为令牌可以配置为具有非常特定的访问权限,并且如果该令牌受到损害,很容易被撤销。

  • 诸超
    2023-03-14

    GitHub多次更改了他们的建议(示例)。

    看来他们目前推荐HTTPS,因为它是最容易在最广泛的网络和平台上设置的,而且用户对所有这些都不熟悉。

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

    >

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

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

    HTTPS连接允许凭据。帮助程序以缓存密码。

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

    很高兴知道:凭据助手仅在克隆HTTPS回购URL时工作。如果使用SSH回购URL,则SSH密钥用于身份验证。虽然我们不推荐它,但如果您希望使用这种方法,请查看本指南,以帮助生成和使用SSH。

     类似资料:
    • 问题内容: 众所周知,Java 中的接口已损坏。造成这种情况的原因很多,我将不再赘述。其他人已经做到了。这也是Java架构师本身的立场。 因此,我的问题是:为什么还不被弃用?如果核心Java团队已确定它已损坏,那么他们还必须考虑过时。他们反对这样做的原因是什么(在Java 8中仍不建议弃用)? 问题答案: 有一个错误在1997年提交给Java的错误数据库有关添加方法,所以将不再是无用的。它以“无法

    • 问题内容: 我曾经在hibernate 3中使用getHibernateTemplate(),现在我转向了Hibernate 4,在这里我找不到以下类: 在这里我已经阅读过有关它的更多信息,不建议使用 http://forum.springsource.org/showthread.php?117227-Missing-Hibernate- Classes-Interfaces-in-spring

    • 问题内容: 我正在将hibernate项目配置为使用第二级缓存提供程序,以便可以利用查询缓存。 我向ehcache添加了一个依赖项: 我认为我要使用的提供程序类是: 在eclipse中查看引用的库时,我在和上都看到了注释。是什么赋予了?我可以使用最新的替代供应商吗? 我正在使用hibernate版本3.4.0.GA,以防万一。 问题答案: 是什么赋予了?我可以使用最新的替代供应商吗? 不推荐使用它

    • 问题内容: 我曾经在hibernate 3中使用getHibernateTemplate(),现在我转向了Hibernate 4,在这里我找不到以下类: 有人可以解释我为什么吗?在hibernate4中,我现在需要执行所有任务,例如提交,关闭,刷新由getHibernateTemplate()方法自动管理的事务? 问题答案: 因为它的主要目的是使Hibernate会话绑定到当前的Spring事务(

    • 问题内容: 我只是想知道为什么现在认为mime_content_type()已被弃用。 这种确定mime类型的方法比替换Fileinfo功能要容易得多。 问题答案: 我猜这是因为Fileinfo可以返回有关files的更多信息。 编辑:这是一个替代黑客:

    • 我以前从未想过,只有我使用了方法返回字符数组,并且我看到了方法是不推荐的。但现在我想,为什么这个方法被否决了?。