PyPI 与 GitHub 的双因素认证 | 2FA 配置指南

news2024/11/25 23:50:32

唠唠闲话

最近登录 GitHub 一直提示设置双重验证。除此之外,开发 Python 包常用的平台—— PyPI ,也宣布从今年开始强制启用双因素认证(2FA)。这一变化虽然在提高安全性方面起到了积极作用,但也给日常工作带来了麻烦。本篇将介绍如何管理和配置 PyPI 和 GitHub 的 2FA,并使用 Python 脚本简化验证过程。

参考链接:

  • Python: 代码打成pip包并发布到 PyPi
  • 什么是双因素验证 2FA,如何用 Python 实现?

PyPI 双重验证

我们先讲讲配置方法,然后再介绍 2FA 的原理。

配置恢复代码

在 PyPI 上,首先要做的是设置恢复代码。这些代码在你无法使用常规 2FA 方法时至关重要。

  1. 打开 Account settings 页面。

  2. 在 2FA 设置区域,生成并下载恢复代码。

    PyPI Recovery Codes

重要事情说三遍:

请妥善保存这些代码,它们是你在遇到问题时重置 2FA 的关键!
请妥善保存这些代码,它们是你在遇到问题时重置 2FA 的关键!
请妥善保存这些代码,它们是你在遇到问题时重置 2FA 的关键!

添加 2FA

接下来,将添加 2FA 到你的 PyPI 账户。

  1. 点击使用身份验证程序添加 2FA。

    PyPI 2FA Setup

  2. 你会看到一个弹出的二维码和应用代码。

    PyPI 2FA QR Code

  3. 安装 Python 包 pyotp 来生成 2FA 验证码。

    pip install pyotp
    
  4. 复制应用代码,并使用以下 Python 脚本获取验证码。

    import pyotp
    
    key = '粘贴 2FA 代码'
    totp = pyotp.TOTP(key)
    print(totp.now())
    
  5. 将脚本保存为 get2fa.py,在需要用时运行脚本。

    #!/usr/bin/env python3
    import pyotp
    
    key = '粘贴 2FA 代码'
    totp = pyotp.TOTP(key)
    print(totp.now())
    
  6. 此外,对于 Mac/Ubuntu 用户,有一个更简洁的方案,使用 mintotp

    pip install mintotp
    mintotp <<< "粘贴 2FA 代码"
    

    创建一个别名:

    alias py2fa="mintotp <<< '粘贴 2FA 代码'"
    

    这样每次在终端运行 py2fa 就能获取 2FA 验证码。

GitHub 2FA

从去年(2023)3 月开始,GitHub 将逐步要求所有用户在提交代码时启用 2FA。下面是如何在 GitHub 上设置 2FA 的步骤。

  1. 在 密码和安全性 页面开启 2FA。

    GitHub 2FA Setup

  2. 你将看到一个提供 2FA 的二维码。

    GitHub 2FA QR Code

  3. 使用二维码识别器获取其中的链接,其中 secret= 后的内容为 2FA 密钥

  4. 后续步骤与 PyPI 类似,可以用同样的脚本或 mintotp 获取验证码。

此外,GitHub 还支持一些选项,比如 passkey 可以将当前设备的指纹功能作为验证因素:

GitHub 2FA Options

2FA 的原理介绍

最后,简单聊聊双因素认证(2FA)的工作原理。

什么是双因素认证(2FA)

双因素认证(2FA)是一种安全机制,它要求用户在登录过程中提供两种不同类型的认证信息。通常包括:

  1. 知识因素(Something You Know):比如密码、PIN 码或安全问题的答案。
  2. 拥有因素(Something You Have):通常是手机应用生成的一次性代码,或者是硬件令牌,比如银行的 U 盾。

通过结合这两种因素,即使其中一个因素(如密码)被泄露,账户仍然安全,因为非法用户缺少第二个必要的认证信息。

一次性密码(OTP)

在 2FA 中,经常使用的“拥有因素”是一次性密码(One-Time Password)。OTP 的生成可以基于时间(TOTP)或事件(HOTP)。

  • 时间基准的一次性密码(TOTP):依据当前时间和一个秘钥生成 OTP。由于时间在不断变化,生成的 OTP 也会在一定时间间隔后失效,通常是30秒。
  • 事件基准的一次性密码(HOTP):基于一个计数器和一个秘钥生成 OTP。每次使用后,计数器增加,生成新的 OTP。

这些一次性密码通常通过哈希算法(如 HMAC)生成的。HMAC(Hash-based Message Authentication Code)结合了一个加密密钥(我们前边复制的代码)和一个加密哈希函数(如SHA-1),以产生功能强大的认证标记。

2FA 密钥

由于 TOTP 和 HOTP 标准的算法是公开和标准化的,不同的应用和工具(如 Google Authenticator, Authy, pyotp 等)在实现时遵循相同的算法和标准,因此用不同的工具使用相同的秘钥能生成相同的 OTP。秘钥的共享通常是通过扫描二维码实现的,这个二维码实际上包含了秘钥和账户信息。

简言之,通过使用 2FA,特别是基于时间或事件的一次性密码(TOTP/HOTP),可以增强账户的安全性。这种方法的关键在于使用一个秘钥生成一次性密码,这个密码对外部攻击者来说几乎不可能预测或复制,除非他们获得了秘钥本身。因此,即使你的主密码泄露,只要 2FA 保持安全,你的账户仍然是安全的。


以上,如果遇到问题,欢迎在评论区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1652370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何利用AI提高内容生产效率

目录 一、自动化内容生成 二、内容分发与推广 三、内容分析与优化 图片来源网络&#xff0c;侵权联系可删 一、自动化内容生成 随着AI技术的飞速发展&#xff0c;自动化内容生成已经成为提高内容生产效率的重要手段。AI可以通过自然语言处理&#xff08;NLP&#xff09;、机…

ESPN 即将登陆 Disney Plus 应用

震撼消息&#xff01;迪士尼CEO鲍勃艾格今日宣布&#xff0c;ESPN板块即将推出精选现场游戏和工作室节目&#xff0c;让所有美国订户目瞪口呆&#xff01; 鲍勃艾格表示&#xff1a;“这是将ESPN带给Disney观众的第一步&#xff0c;我们准备在2025年秋季推出增强型独立ESPN流媒…

代码随想录算法训练营第36期DAY14

DAY14&#xff08;周二&#xff09; 二叉树的递归遍历 144二叉树的前序遍历 过了。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullp…

卡尔曼滤波实战

入门内容 假如有个超声波&#xff0c;它传回的数据是这样的&#xff0c;这样的数据是用不了的 我们想要的是稳定的数据 此时我们引入滤波&#xff0c;把里面的噪声去掉&#xff0c;使得数据更平滑 适用系统&#xff1a; 符合两个特质&#xff1a;线性和高斯。 也叫线性高斯…

PyCharm怎么安装Comate与使用示范

目录 简单介绍Comate 安装步骤详解 Comate使用示范详解 使用总结 简单介绍Comate Baidu Comate智能编码助手是一款基于文心大模型打造的编码辅助工具&#xff0c;具备多重优势&#xff0c;包括代码智能、应用场景丰富、创造价值高、广泛应用等。它能帮助开发者提升编码效率…

AR人脸道具SDK解决方案,实现道具与人脸的自然融合

AR人脸道具SDK解决方案&#xff0c;实现道具与人脸的自然融合美摄科技以其卓越的技术实力和创新能力&#xff0c;为企业带来了全新的AR人脸道具SDK解决方案。这一解决方案将为企业打开全新的市场机会&#xff0c;为用户带来前所未有的互动体验。 颠覆传统&#xff0c;开启AR人…

【Debug日记】albumentations包安装失败解决方案

直接pip安装pip install albumentations 报错&#xff1a; ERROR: Command errored out with exit status 1:command: D:\anaconda3\envs\pytorch\python.exe D:\anaconda3\envs\pytorch\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py build_wheel C:\Users…

2024年营销技术远景图发布:14,106种营销技术产品(同比增长27.8%)

每年五月的第一个星期二&#xff08;美国东部时间&#xff09;&#xff0c;Scott Brinker设定为Martech Day&#xff0c;以此来庆祝营销技术行业和所有有才华的营销技术专家和营销运营专业人士的工作&#xff0c;「为你们在开拓这片荒野所做的一切而欢呼&#xff01;」 同时&a…

24年考研管综199真题PDF共18页

整理了24年考研管综199真题PDF共18页&#xff0c;包含问题求解&#xff0c;条件充分性判断&#xff0c;逻辑推理&#xff0c;写作&#xff0c;几个部分&#xff0c;希望对大家有所帮助 一、问题求解 这部分包含15道小题&#xff0c;每题3分&#xff0c;共45分。题目类型为选择…

SpringBoot使用AOP注解记录操作日志

一、前言 日志&#xff1a;指系统所指定对象的某些操作和其操作结果按时间有序的集合。 操作日志&#xff1a;主要是对某个对象进行新增操作或者修改操作后记录下这个新增或者修改&#xff0c;操作日志要求可读性比较强。比如张三在某个时间下了订单买了某个商品&#xff01; …

CSS选择器(基本+复合+伪类)

目录 CSS选择器 基本选择器 标签选择器&#xff1a;使用标签名作为选择器->选中同名标签设置样式 类选择器&#xff1a;给类选择器定义一个名字.类名&#xff0c;并给标签添加class"类名" id选择器&#xff1a;跟类选择器非常相似&#xff0c;给id选择器定义…

【Qt问题】VS2019 Qt win32项目如何添加x64编译方式

往期回顾&#xff1a; 【Qt问题】Qt常用快捷键汇总-CSDN博客 【Qt问题】Qt Creator 如何链接第三方库-CSDN博客 【Qt问题】Qt 如何带参数启动外部进程-CSDN博客 【Qt问题】VS2019 Qt win32项目如何添加x64编译方式 我们都知道vs2019在编译项目的时候是需要选择编译环境的&…

完全背包问题(零钱交换+组合总和

完全背包问题&#xff08;物体可以无限使用&#xff0c;正序遍历即可 For循环顺序也能交换&#xff0c;装满的话 零钱交换 完全背包问题&#xff0c;如果求装满背包有几种方法&#xff0c;都用累加。 遍历顺序影响到输出的结果是组合数还是排列数 先物品再背包是组合数&…

宏集PLC+HMI触控一体机助力构建物料自动分拣系统

一、应用背景 随着工业生产和物流领域的快速发展&#xff0c;对仓储、分拣和配送效率以及准确性的需求不断提高。传统的人工分拣已无法满足市场需求&#xff0c;为了实现智能物流&#xff0c;对高性能的物料输送分拣设备需求更为迫切。 二、物料分拣系统介绍 智能化物料分拣系…

【强训笔记】day15

NO.1 代码实现&#xff1a; #include<iostream> #include<cmath>using namespace std; typedef long long ll;int main() {ll x;cin>>x;ll asqrt(x);ll x1a*a,x2(a1)*(a1);if(x-x1<x2-x) cout<<x1<<endl;else cout<<x2<<endl;r…

网络安全的未来:挑战、策略与创新

引言&#xff1a; 在数字化时代&#xff0c;网络安全已成为个人和企业不可忽视的议题。随着网络攻击的日益频繁和复杂化&#xff0c;如何有效保护数据和隐私成为了一个全球性的挑战。 一、网络安全的现状与挑战 网络安全面临的挑战多种多样&#xff0c;包括但不限于恶意软件、…

C语言 main( ) 函数的指针数组形参是怎么回事?

一、问题 在使⽤⼀些开发⼯具⽣成C语⾔⽂件时&#xff0c;主函数 mian( ) 中会有参数&#xff0c;这个参数到底是怎么回事⼉呢&#xff1f; 二、解答 mian( ) 称为主函数&#xff0c;是所有程序运⾏的⼊口。 mian( ) 函数是由系统调⽤的&#xff0c;当处于操作命令状态下&…

47. UE5 RPG 实现角色死亡效果

在上一篇文章中&#xff0c;我们实现了敌人受到攻击后会播放受击动画&#xff0c;并且还给角色设置了受击标签。并在角色受击时&#xff0c;在角色身上挂上受击标签&#xff0c;在c里&#xff0c;如果挂载了此标签&#xff0c;速度将降为0 。 受击有了&#xff0c;接下来我们将…

Linux中每当执行‘mount’命令(或其他命令)时,自动激活执行脚本:输入密码,才可以执行mount

要实现这个功能&#xff0c;可以通过创建一个自定义的mount命令的包装器&#xff08;wrapper&#xff09;来完成。这个包装器脚本会首先提示用户输入密码&#xff0c;如果密码正确&#xff0c;则执行实际的mount命令。以下是创建这样一个包装器的步骤&#xff1a; 创建一个名为…

IP 地址追踪工具促进有效的 IP 管理

网络 IP 地址空间的结构、扫描和管理方式因组织的规模和网络需求而异&#xff0c;网络越大&#xff0c;需要管理的 IP 就越多&#xff0c;IP 地址层次结构就越复杂。因此&#xff0c;如果没有 IP 地址管理&#xff08;IPAM&#xff09;解决方案&#xff0c;IP 资源过度使用和地…