赞
踩
最近登录 GitHub 一直提示设置双重验证。除此之外,开发 Python 包常用的平台—— PyPI ,也宣布从今年开始强制启用双因素认证(2FA)。这一变化虽然在提高安全性方面起到了积极作用,但也给日常工作带来了麻烦。本篇将介绍如何管理和配置 PyPI 和 GitHub 的 2FA,并使用 Python 脚本简化验证过程。
参考链接:
我们先讲讲配置方法,然后再介绍 2FA 的原理。
在 PyPI 上,首先要做的是设置恢复代码。这些代码在你无法使用常规 2FA 方法时至关重要。
打开 Account settings 页面。
在 2FA 设置区域,生成并下载恢复代码。
重要事情说三遍:
请妥善保存这些代码,它们是你在遇到问题时重置 2FA 的关键!
请妥善保存这些代码,它们是你在遇到问题时重置 2FA 的关键!
请妥善保存这些代码,它们是你在遇到问题时重置 2FA 的关键!
接下来,将添加 2FA 到你的 PyPI 账户。
点击使用身份验证程序添加 2FA。
你会看到一个弹出的二维码和应用代码。
安装 Python 包 pyotp
来生成 2FA 验证码。
pip install pyotp
复制应用代码,并使用以下 Python 脚本获取验证码。
import pyotp
key = '粘贴 2FA 代码'
totp = pyotp.TOTP(key)
print(totp.now())
将脚本保存为 get2fa.py
,在需要用时运行脚本。
#!/usr/bin/env python3
import pyotp
key = '粘贴 2FA 代码'
totp = pyotp.TOTP(key)
print(totp.now())
此外,对于 Mac/Ubuntu 用户,有一个更简洁的方案,使用 mintotp
。
pip install mintotp
mintotp <<< "粘贴 2FA 代码"
创建一个别名:
alias py2fa="mintotp <<< '粘贴 2FA 代码'"
这样每次在终端运行 py2fa
就能获取 2FA 验证码。
从去年(2023)3 月开始,GitHub 将逐步要求所有用户在提交代码时启用 2FA。下面是如何在 GitHub 上设置 2FA 的步骤。
在 密码和安全性 页面开启 2FA。
你将看到一个提供 2FA 的二维码。
使用二维码识别器获取其中的链接,其中 secret=
后的内容为 2FA 密钥
后续步骤与 PyPI 类似,可以用同样的脚本或 mintotp
获取验证码。
此外,GitHub 还支持一些选项,比如 passkey 可以将当前设备的指纹功能作为验证因素:
最后,简单聊聊双因素认证(2FA)的工作原理。
双因素认证(2FA)是一种安全机制,它要求用户在登录过程中提供两种不同类型的认证信息。通常包括:
通过结合这两种因素,即使其中一个因素(如密码)被泄露,账户仍然安全,因为非法用户缺少第二个必要的认证信息。
在 2FA 中,经常使用的“拥有因素”是一次性密码(One-Time Password)。OTP 的生成可以基于时间(TOTP)或事件(HOTP)。
这些一次性密码通常通过哈希算法(如 HMAC)生成的。HMAC(Hash-based Message Authentication Code)结合了一个加密密钥(我们前边复制的代码)和一个加密哈希函数(如SHA-1),以产生功能强大的认证标记。
由于 TOTP 和 HOTP 标准的算法是公开和标准化的,不同的应用和工具(如 Google Authenticator, Authy, pyotp 等)在实现时遵循相同的算法和标准,因此用不同的工具使用相同的秘钥能生成相同的 OTP。秘钥的共享通常是通过扫描二维码实现的,这个二维码实际上包含了秘钥和账户信息。
简言之,通过使用 2FA,特别是基于时间或事件的一次性密码(TOTP/HOTP),可以增强账户的安全性。这种方法的关键在于使用一个秘钥生成一次性密码,这个密码对外部攻击者来说几乎不可能预测或复制,除非他们获得了秘钥本身。因此,即使你的主密码泄露,只要 2FA 保持安全,你的账户仍然是安全的。
以上,如果遇到问题,欢迎在评论区留言。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。