GitHub 双因子认证指导
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)
- 点一下下面的“了解更多(learn-more)”
为了提高软件供应链的整体安全性,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)的应用:
- [1Password](https://lastpass.com/auth/)
- [Authy] (https://authy.com/guides/github/)
- [LastPass Authenticator] (https://lastpass.com/auth/)
- [Microsoft Authenticator] (https://www.microsoft.com/en-us/security/mobile-authenticator-app/)
这里又冒出了一个问题:
对于我这种只用情怀手机的人犯难了:
- 安卓系统,无法使用googl应用市场,不能下载应用;
- Mac系统,从来不用苹果手机。
所以目前使用这些应用中有windows应用的应用了。
-
[1Password] (https://lastpass.com/auth/)
收费,坚决放弃!
-
[Microsoft Authenticator] (https://www.microsoft.com/en-us/security/mobile-authenticator-app/)
无windows应用,放弃
-
[LastPass Authenticator] (https://lastpass.com/auth/)
收费,坚决放弃!
-
[Authy] (https://authy.com/guides/github/)
最后只剩这个可选了,还好有windows应用,有条路走。
- 具体步骤:
- 选择Authy相应系统的安装文件,并安装;
- 注册一个账户,Authy 允许使用中国SMS;
- 从github得到生成的QR码
可以直接点“enter this text code”
3.将QR码在Authy中生成一个身份验证账户
- 将获得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/)
原来这个才是不能提交的真正凶手。
真凶找到了,继续:
-
参照Adding your SSH key to the ssh-agent生成新的key
- 注意,记得清楚原有的sshkey, id_rsa等
$ 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突然就不能用了(也许是我没留意升级通知),如果这个代码是用来救命的,就死了好几回了。
-
虽然七转八转的能用了,但目前的方法还是依赖外部的软件和网络。很有可能再出什么幺蛾子。手机认证的选择,是把双刃剑,特别是在一个全球开源软件仓库上的使用。
-
看来是时候迁移回国内了。
- 点赞
- 收藏
- 关注作者
评论(0)