Linux如何实现用户登录双因素认证 Google Authenticator配置指南

linux系统可通过安装google authenticator实现ssh用户登录双因素认证(2fa)。一、安装工具包:在debian/ubuntu上使用sudo apt install libpam-google-authenticator,在centos/rhel上使用sudo yum install google-authenticator,并运行google-authenticator生成密钥和二维码。二、配置pam模块:在/etc/pam.d/sshd中添加auth required pam_google_authenticator.so以启用验证逻辑。三、调整ssh配置:在/etc/ssh/sshd_config中设置challengeresponseauthentication yes、usepam yes,并根据需求调整passwordauthentication,之后重启sshd服务。四、用户端配置:通过手机安装google authenticator应用并扫描二维码,获取动态验证码。五、测试登录流程:新开终端执行ssh命令测试,确保输入密钥或密码后还需输入验证码方可登录,以验证配置是否生效。

Linux如何实现用户登录双因素认证 Google Authenticator配置指南

Linux系统实现用户登录双因素认证(2FA)是一个提升安全性的有效方式,尤其适用于SSH远程登录等场景。使用Google Authenticator是一种常见且操作相对简单的方案。

Linux如何实现用户登录双因素认证 Google Authenticator配置指南

一、安装 Google Authenticator 工具包

要启用双因素认证,首先需要在你的 Linux 系统上安装 libpam-google-authenticator 包。大多数主流发行版的软件仓库中都有这个组件。

Linux如何实现用户登录双因素认证 Google Authenticator配置指南

Debian/Ubuntu:

sudo apt updatesudo apt install libpam-google-authenticator

CentOS/RHEL:

Linux如何实现用户登录双因素认证 Google Authenticator配置指南

sudo yum install google-authenticator

安装完成后,每个用户都需要单独运行一次初始化命令:

google-authenticator

它会生成一个二维码和密钥,并询问你是否启用一些可选设置,比如时间偏移、单次使用码等。建议都选择“Y”。

二、配置 PAM 模块支持验证逻辑

PAM(Pluggable Authentication Modules)是 Linux 中负责身份验证的核心模块之一。你需要修改 SSH 的 PAM 配置文件,使其调用 Google Authenticator 插件。

编辑文件:

sudo nano /etc/pam.d/sshd

在最上方添加一行:

auth required pam_google_authenticator.so

保存并退出。这一步表示 SSH 登录时将强制进行 Google Authenticator 验证。

三、配置 SSH 服务启用 ChallengeResponse 认证

为了让 SSH 支持一次性验证码输入,还需对 SSH 配置文件做调整。

因赛AIGC 因赛AIGC

因赛AIGC解决营销全链路应用场景

因赛AIGC 73 查看详情 因赛AIGC

打开配置文件:

sudo nano /etc/ssh/sshd_config

确保以下几项被正确设置:

ChallengeResponseAuthentication yesUsePAM yesPasswordAuthentication no # 如果你希望只通过密钥+2FA登录

如果你使用 SSH 密钥登录,可以保留 PasswordAuthenticationyes,但推荐结合密钥与 2FA 使用以获得更高安全性。

最后重启 SSH 服务:

sudo systemctl restart sshd

四、用户端配置 Google Authenticator 应用

用户初次运行 google-authenticator 命令后,会输出一个二维码链接或直接显示二维码内容。此时可以在手机上下载并安装 Google Authenticator 应用:

Android 用户可在 Play 商店搜索安装。iOS 用户可在 App Store 下载。

扫描二维码后,应用就会自动生成每30秒更新的一次性验证码。下次 SSH 登录时,除了正常的身份验证(如密码或密钥),还会提示输入当前的一次性验证码。

五、测试登录流程是否生效

建议先不要关闭原有的密码登录方式,而是新开一个终端窗口尝试登录,避免误操作导致无法进入系统。

你可以使用如下命令测试 SSH 登录:

ssh username@your_server_ip

如果一切正常,在输入密钥或密码之后,系统会提示你输入验证码。输入后即可成功登录。

基本上就这些步骤了。整个过程不复杂,但有些细节容易忽略,例如 PAM 和 SSH 的配置顺序、是否启用了 ChallengeResponse 等。只要一步步来,应该不会遇到太大问题。

以上就是Linux如何实现用户登录双因素认证 Google Authenticator配置指南的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/460976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 03:28:47
下一篇 2025年11月8日 03:33:52

相关推荐

  • c 语言怎么调用头文件

    要调用 C 语言中的头文件,您需要:1. 使用 #include 预处理指令包含头文件;2. 在编译时链接到包含头文件元素的库;3. 使用头文件中的声明。例如,要使用 stdio 库中的 printf 函数,您需要包含 ,链接 kernel32.lib,然后在您的程序中使用 printf。 如何用 …

    2025年12月18日
    000
  • c语言头文件怎么检查

    通过检查 C 语言头文件,可以确保代码的准确性和一致性。检查步骤包括:(1) 使用 #include 预处理程序包含头文件;(2) 使用 -I 编译器选项指定头文件搜索路径;(3) 利用 IDE 的头文件管理器;(4) 手动检查是否存在语法错误;(5) 使用在线工具检查代码编译情况;(6) 依赖关系…

    2025年12月18日
    000
  • c语言怎么找头文件

    有四种方法可以找到 C 语言头文件:使用编译器选项 (-I 指定头文件目录);使用预处理器指令 (#include 指令包含头文件);使用环境变量 (设置 CPATH 或 INCLUDE 路径);使用系统默认路径 (通常位于 /usr/include 等)。 如何找到 C 语言头文件 方法 1:使用…

    2025年12月18日
    000
  • c语言头文件怎么确认

    C 语言头文件包含预定义符号和函数声明,用于编译和链接代码。确认头文件的方法:1. 检查 #include 预处理指令;2. 使用编译器标志(如 -M);3. 查看标准库目录(如 /usr/include);4. 使用头文件管理工具(如 automake、Cmake)。 C 语言头文件确认 在 C …

    2025年12月18日
    000
  • c语言头文件怎么安装

    头文件包含函数声明,对于使用库和系统功能至关重要。安装头文件的步骤如下:检查是否存在 header.h 文件。下载头文件,将其复制到头文件目录(例如,在 Linux/Unix 中为 /usr/include)。更新编译器包含路径,使用 -I 选项指定头文件路径。编译代码,验证头文件是否安装正确。 如…

    2025年12月18日
    000
  • C++ 模板在跨平台开发中的应用如何?

    c++++模板是一种强大的功能,允许跨平台开发人员一次编码,然后在任何平台上编译。要使用模板,请使用”template”来声明模板函数或类。模板的实战应用包括跨平台图形库,其中模板隐藏了底层实现细节,保持了跨平台的一致性。 C++ 模板在跨平台开发中的应用 C++ 模板是一项…

    2025年12月18日
    000
  • 了解 C++ 与游戏图形 API 的协同作用

    c++++ 与游戏图形 api(如 directx 和 opengl)协作,提供低级控制、跨平台支持和高效内存管理,优化图形性能。实战案例中,通过 directx 12 创建设备和交换链、命令列表和队列,以及后台缓冲区和描述符堆,演示了清除和呈现过程,展示了 c++ 和 directx 12 的协作…

    2025年12月18日
    000
  • C++ 为何成为游戏引擎开发的理想选择?

    c++++ 以其效率、灵活性、底层硬件访问能力而成为游戏引擎开发的理想选择。效率: 作为编译语言,c++ 速度极快,适合实时处理游戏引擎中的大量数据。灵活性: 直接访问底层硬件,使开发人员针对平台或硬件架构优化引擎。实战案例: 虚幻引擎 4 和 unity 等流行引擎使用 c++ 开发,证明了其 a…

    2025年12月18日
    000
  • 浅析 C++ 对游戏图形和渲染的重要性

    c++++在游戏图形和渲染中至关重要,它提供了:直接内存访问,提高性能跨平台支持,简化部署强大的库支持,提供各种工具引擎集成,构建基本框架 浅析 C++ 对游戏图形和渲染的重要性 概述 C++ 是游戏开发中广泛使用的编程语言,在图形和渲染方面尤为重要。它提供了低级别的控制和高效的性能,使开发人员能够…

    2025年12月18日
    000
  • c语言头文件怎么建立

    建立 C 语言头文件的步骤包括:创建文件:”myheader.h”编写声明:函数原型、数据类型、宏包含库:#include 保护头文件:#ifndef 和 #define保存文件:包含目录(/usr/include 或 Visual Studio 目录)使用头文件:#incl…

    2025年12月18日
    000
  • c语言函数库怎么查

    C语言函数库可以通过以下方法查询:使用man命令查看手册页。在编程环境中使用help命令获取帮助信息。参考在线资源,例如CppStandardLibrary、GNUCLibrary和MicrosoftDocs。阅读包含函数声明的头文件。使用IDE提供的内置函数库参考工具。 C 语言函数库查询方法 对…

    2025年12月18日
    000
  • C++技术在现代软件开发中发挥的作用是什么?

    c++++ 是一种在现代软件开发中广泛应用的编程语言。其优势包括:高性能:编译后的机器码直接执行,效率极高。跨平台:支持跨操作系统和硬件架构运行。面向对象编程:封装、继承和多态性,提高代码可重用性和可维护性。高度可定制:低级内存管理和指针操作,精细控制应用程序行为。实战案例包括操作系统、游戏开发、嵌…

    2025年12月18日
    000
  • C++技术在大型软件项目中的优势和挑战

    大型软件项目中 c++++ 的优势和挑战:优势:高性能:出色的内存管理和优化可扩展性:支持代码重用和模块化低级内存控制:精细内存管理跨平台兼容性:跨平台代码库挑战:学习曲线陡峭代码复杂性内存管理缺乏运行时垃圾回收实战案例:大型多人在线游戏引擎中,c++ 提供高性能、可扩展性、跨平台兼容性,助力处理数…

    2025年12月18日
    000
  • C++技术在未来软件开发中的前景如何?

    c++++技术在未来软件开发中拥有广阔前景,因为它具有高性能、可扩展性、可移植性,适用于物联网、游戏开发、高性能计算、操作系统、企业应用程序等领域。未来,c++将在云计算、人工智能、量子计算等新兴领域发挥重要作用,为高性能、跨平台和高效的应用程序奠定基础。 C++技术在未来软件开发中的前景 C++ …

    2025年12月18日
    000
  • C++在物联网和嵌入式系统中的嵌入式Linux支持

    在物联网和嵌入式 linux 系统中,c++++ 作为嵌入式软件的开发语言受到广泛采用,主要原因在于:嵌入式 linux 通常提供 c++ 开发所需的库和工具,包括 gnu c++ 编译器和 c++ 标准库。c++ 提供了对系统级编程的支持,非常适用于物联网和嵌入式系统中资源受限的环境。c++ 具有…

    2025年12月18日
    000
  • C++ 技术在航天器设计中的应用

    c++++ 凭借其效率和面向对象的特性,非常适合航天器设计领域,其中性能和可靠性至关重要。它用于各种应用,包括引导和控制系统、数据处理、电源管理和通信,以提供高性能、可靠且易于维护的解决方案。 C++ 技术在航天器设计中的应用 C++ 作为一门强大的编程语言,以其效率和对低级系统控制的出色支持而著称…

    2025年12月18日
    000
  • 掌握C++技术对软件工程师有何价值?

    标题:掌握 C++ 技术对软件工程师的价值 导言 C++ 是一种强大的编程语言,因其效率、性能和对底层系统的控制而受到软件工程师的推崇。掌握 C++ 技术为软件工程师提供了广泛的机会和优势。 代码示例 立即学习“C++免费学习笔记(深入)”; #include int main() { // 创建一…

    2025年12月18日
    000
  • C++内存管理的跨平台差异

    c++++ 内存管理在不同平台上存在细微差异,包括:堆分配:new 在 windows 上会自动初始化内存,而 linux 上需要显式初始化。指针算术:++ 运算符在 windows 上指向下一个元素,在 linux 上指向下一个字节。字节序:大端法和小端法存储整数字节顺序不同。调试信息:gdb 和…

    2025年12月18日
    000
  • C++在移动应用程序开发中的潜力:跨平台兼容性

    c++++ 在移动应用程序开发中凭借跨平台兼容性发挥着至关重要的作用,可通过以下方式实现:节省时间和资金:一次编写即可在多个平台运行,无需单独编写。保持代码库一致:单一代码库简化维护和更新。扩展市场覆盖范围:应用程序可在广泛的设备和操作系统上运行。主要跨平台库包括 qt、wxwidgets 和 ju…

    2025年12月18日
    000
  • C++在哪些方面优于Java

    c++++ 优于 java 的方面:性能:编译为机器代码,速度更快。内存管理:提供对内存的低级控制,提高性能和减少内存泄漏。可移植性:可编译为多种平台,适合跨平台开发。实战案例:广泛用于游戏开发、高性能计算和嵌入式系统中。 C++ 在哪些方面优于 Java C++ 作为一种低级语言,与 Java 等…

    2025年12月18日
    000

发表回复

登录后才能评论
关注微信