GitHub 双因子认证指导

举报
Uncle_Tom 发表于 2023/03/26 14:09:52 2023/03/26
【摘要】 3月23突然github无法提交,原来是ssh key升级,以及双因子认证(2FA)作妖。 虽然这是件好事,但也让开源软件开发者觉得自由的空间越来越小了。 估计后面一段时间很多人会遇到这个问题,因此总结了下,给大家一些方便。

1. 突然的GitHub 双因子认证要求

晚上在提交代码的时候,突然发现用了10年的GitHub不能提交代码了。

git push
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
Please contact your system administrator.
Add correct host key in /c/Users/xxx/.ssh/known_hosts to get rid of this message.
Offending RSA key in /c/Users/xxx/.ssh/known_hosts:1
Host key for github.com has changed and you have requested strict checking.
Host key verification failed.
The fingerprint for the RSA key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Please contact your system administrator.

看到这个,不可置信的有重读了几遍, 立马脑子嗡嗡的,有人使用了SSH中间人攻击(Man-in-the-middle attack)的方法黑了我账户,修改了我的host key! 让我立刻联系我的系统管理员。。。。

真是不可置信,前天还好好的,昨天早睡了一下没关机,就被黑了么?

赶快登录Github web网站,还好密码可用,快去修改密码,access key。。。

赫然发现在密码这边多了双因子认证(Two-factor authentication)
github-2fa

为了提高软件供应链的整体安全性,GitHub 重磅宣布,在 2023 年之前,所有使用 GitHub 平台存储代码、做贡献的开发者都需要启动一种或多种形式的双因子身份验证(2FA),否则将无法正常使用该平台。

除了原来密码认证外,增加了第二种身份验证形式。 第二种认证方式是一个由移动设备上的应用程序生成的或者以短信 (SMS) 形式发送的代码。 在启用 2FA 后,只要有人尝试登录你在 GitHub.com 上的帐户,GitHub 就会生成验证码。 用户能登录你的帐户的唯一方式是,他们知道你的密码,且有权访问你手机上的验证码。

这个双因子认证去年就开始吵吵,没想到今年来的这么快。

看来是Github 为了提高安全性,这次是动真的了。 这不禁让我想起了很多、很多年前所使用了VPN密码,每人一个小小的隔一段时间变化的密码钥匙。

  • 注: 网页提供了中文页面,但里面的内容不一样,缺少了不少信息,建议还是看英文页面。

2. 设置双因子认证

好吧,既然终将要来,那就弄吧。

设置过程中,提供了两种认证方式,应用和手机SMS。

2.1. 方法一:SMS(此路不通)

当然手机SMS 是最简单的。但一使用发现,不支持中国。下拉菜单没有中国,打开支持国家列表

这一周期性的更新,不知道要到什么时候了,此路暂时不通!

2.2. 方法二:TOTP应用

配置说明里给了几个time-based one-time password (TOTP)的应用:

这里又冒出了一个问题:
对于我这种只用情怀手机的人犯难了:

  1. 安卓系统,无法使用googl应用市场,不能下载应用;
  2. Mac系统,从来不用苹果手机。

所以目前使用这些应用中有windows应用的应用了。

  1. 选择Authy相应系统的安装文件,并安装;
  2. 注册一个账户,Authy 允许使用中国SMS;
  3. 从github得到生成的QR码
    可以直接点“enter this text code”

3.将QR码在Authy中生成一个身份验证账户

  1. 将获得Authy token的输入Github 认证页面,完成2FA认证。
    如果失败,可能是github的QR 失效,需要重新获得QR码,重新生成一个身份认证账户。也就是重复步骤2到步骤4。
    我就是因为中间摸索的时间过长,导致QR码失效。

3. 还有问题,SSH key升级

本以为搞定了2FA,就好了,可提交的时候仍然报同样的错。
再去社区查了下,原来3月23号ssh key 也上级了。[SSH key 也要升级] (https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/)

原来这个才是不能提交的真正凶手。

真凶找到了,继续:

$ ls -al ~/.ssh
total 31
drwxr-xr-x 1 xxx 197121    0 Mar 26 10:25 ./
drwxr-xr-x 1 xxx 197121    0 Mar 26 10:28 ../
-rw-r--r-- 1 xxx 197121  411 Mar 26 10:25 id_ed25519
-rw-r--r-- 1 xxx 197121  100 Mar 26 10:25 id_ed25519.pub
-rw-r--r-- 1 xxx 197121 2602 May 28  2021 id_rsa
-rw-r--r-- 1 xxx 197121  573 May 28  2021 id_rsa.pub
-rw-r--r-- 1 xxx 197121  880 May 28  2021 known_hosts

$ rm ~/.ssh/id_rsa
$ rm ~/.ssh/id_rsa.pub
$ rm ~/.ssh/known_hosts

这下终于好了。

4. 总结

  • 双因子认证本来是个好事,去年就开始打预防针。但事前还是没有很好的通知用户, 特别是ssh key升级,搞得好突然3/23突然就不能用了(也许是我没留意升级通知),如果这个代码是用来救命的,就死了好几回了。

  • 虽然七转八转的能用了,但目前的方法还是依赖外部的软件和网络。很有可能再出什么幺蛾子。手机认证的选择,是把双刃剑,特别是在一个全球开源软件仓库上的使用。

  • 看来是时候迁移回国内了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。