GitHub 防黑客新措施:弃用账密验证 Git 操作,改用 token 或 SSH 密钥,今晚 0 点执行

还在用账户 + 密码对 GitHub 上的 Git 操作进行身份验证?

赶紧整个 token(令牌)或 SSH 密钥吧!

8 月 14 号 0 点(8 月 13 日 9:00 PST)开始,在 GitHub 上执行 Git 操作就会导致失败

GitHub 官方表示,这一举措是为了提高 Git 操作的安全性,防止密码撞库等事情发生。

哪些操作会受影响?

简单来说,如果你还在用账密验证 Git 操作,这些行为都会受到影响:

  • 命令行 Git 访问

  • 采用 Git 的桌面应用程序(GitHub Desktop 不受影响)

  • 账密访问 GitHub 上 Git repo 的一切应用程序/服务

这些用户不会受影响:

  • 已经采用 token 或 SSH 密钥方式验证,即启用双因素身份验证(2FA)的用户

  • 使用 GitHub Enterprise Server 本地产品的用户(该产品尚未对此进行更改)

  • 使用 GitHub App 的用户,此前已经不支持账密验证

当然,大部分经常使用 Git 的用户应该都已经知道这件事了。

在今年 6 月 30 号(15~18 时)、7 月 1 号(0~3 时)、7 月 28 号(15~18 时)和 29 号(0~3 时),GitHub 已经针对这件事进行了预演,所有 Git 操作都被要求用 token 或 SSH 密钥验证。

现在,这项举措已经变成一个永久措施。

GitHub 究竟为什么要这样做呢?

token 和 SSH 密钥安全在哪里?

首先需要了解,只用账户和密码进行身份验证会有什么隐患。

互联网上,每天都有大量网站遭受黑客攻击,导致数据外泄,这些数据中就包括不少用户的账号密码。

拿到账号密码后,黑客会用它们试着登录其他网站,也就是所谓的密码撞库。

简单来说,如果你 ABC 网站用的是一套账户密码,在 A 网站的密码被泄露后,BC 网站也可能会被盗号。

为了防止密码撞库,网站会采取更多手段验证身份信息,像 GitHub 就推出了双因素身份验证、登录警报、设备认证、防用泄露密码及支持 WebAuth 等措施。

双因素身份验证,是指在秘密信息(密码等)、个人物品(身份证等)、生理特征(指纹/虹膜/人脸等)这三种因素中,同时用两种因素进行认证的过程。

现在,GitHub 开始强制用户采用 token 或 SSH 密钥进行身份验证。相比于账密,这两者的安全性显然更高:

  • 唯一性:仅限 GitHub 使用,根据设备/使用次数生成

  • 可撤销性:可随时被单独撤销,其他凭证不受影响

  • 区域性:使用范围可控,只允许在部分访问活动中执行

  • 随机性:不受撞库影响,比账密复杂度更高

那么,token 和 SSH 密钥之间,哪个更合适呢?

虽然目前 GitHub 官方推荐的是 token,因为它设置更为简单,不过相比之下,SSH 密钥的安全性要更高一些。

还没有设置 token 或 SSH 密钥的 Git 用户,可以戳官方教程整起来了~

GitHub 设置教程:

[1]http://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

[2]http://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

参考链接:

[1]http://github.blog/changelog/2021-08-12-git-password-authentication-is-shutting-down/

[2]http://www.theregister.com/2021/08/12/git_proxyshell_gigabyte/