如何在 Linux 上为 SSH 启用 MFA(Google Authenticator 方式)

ops/2025/2/12 4:20:23/

这里以 Google Authenticator 作为示例,配置 SSH 登录时启用 MFA。

1. 安装 Google Authenticator

sudo apt update
sudo apt install libpam-google-authenticator

 (CentOS / RHEL)

sudo yum install google-authenticator

2. 配置 Google Authenticator

为每个用户启用 Google Authenticator:

google-authenticator

 回答问题(推荐选项):
✅ "Do you want authentication tokens to be time-based?" → Yes(Y)
✅ 记录 密钥和二维码(可用 Google Authenticator 扫描)
✅ "Do you want me to update your “.google_authenticator” file?" → Yes(Y)
✅ "Do you want to enable rate-limiting?" → Yes(Y)(防止暴力破解)

3. 配置 PAM 让 SSH 需要 MFA

编辑 /etc/pam.d/sshd,添加:

auth required pam_google_authenticator.so

4. 配置 SSH 服务器支持 MFA

编辑 /etc/ssh/sshd_config,确保:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,password publickey,keyboard-interactive
UsePAM yes
  • 这表示 SSH 既需要密码,也需要 MFA
  • 如果使用 SSH Key + MFA,请启用 publickey,keyboard-interactive

保存并重启 SSH 服务:

sudo systemctl restart sshd

5. 测试 SSH MFA

从另一台机器尝试 SSH 登录:

ssh your-user@your-server

 系统会: ✅ 先要求密码
再要求 Google Authenticator MFA(输入 App 里的 6 位验证码)

6.是否必须使用 MFA?(可选绕过 MFA 的情况)

A.仅对某些用户启用 MFA

  • /etc/pam.d/sshd 前面加一行
auth [success=1 default=ignore] pam_succeed_if.so user in group mfausers
auth required pam_google_authenticator.so
  • 这表示 仅属于 mfausers 组的用户需要 MFA
  • 创建 mfausers 组:
sudo groupadd mfausers
sudo usermod -aG mfausers your-user

 B.对 SSH Key 认证免除 MFA

  • /etc/ssh/sshd_config 里,确保:
AuthenticationMethods publickey password,keyboard-interactive
  •  这意味着 使用 SSH Key 登录时,不需要 MFA,但密码登录仍然需要 MFA。

总结

方案是否需要 MFA
默认 SSH 密码登录✅ 需要 MFA
SSH 密钥登录(默认)❌ 不需要 MFA
密码 + SSH Key 登录✅ 需要 MFA
仅特定用户需要 MFA⚠️ 可配置
仅密码登录需要 MFA,SSH Key 免 MFA⚠️ 可配置

建议配置

  • 使用 SSH Key 登录(安全性更高),可跳过 MFA
  • 对密码登录强制启用 MFA,增强安全性
  • 仅让特定用户需要 MFA,适用于运维环境

如果你想 SSH 100% 强制 MFA,确保 AuthenticationMethods publickey,keyboard-interactive,这样 SSH Key 也需要 MFA!🔐


http://www.ppmy.cn/ops/157685.html

相关文章

《量化绿皮书》Chapter 3 Calculus and Linear Algebra 微积分与线性代数(二)

《A Practical Guide To Quantitative Finance Interviews》,被称为量化绿皮书,是经典的量化求职刷题书籍之一,包含以下七章: Chapter 1 General Principles 通用技巧 Chapter 2 Brain Teasers 脑筋急转弯 Chapter 3 Calculus and…

flask开发的网站,后端服务关闭后,可以找回之前的数据的吗

如果使用 Flask 开发的网页,后端服务关闭后,是否还能找回数据取决于数据的存储方式: 可能找回数据的情况: 数据库存储(MySQL、PostgreSQL、SQLite 等) 如果 Flask 连接的是持久化数据库,即使后…

废品回收小程序:技术创新下的经济效益

随着全球的环保政策影响力不断加大,回收行业逐渐成为了人们关注的领域,废品回收也成为了人们日常生活中常做的事,回收行业的市场规模正在不断扩大! 在数字化的推动下,“互联网回收”迎来了发展机遇。回收小程序可以直…

Java:201 基于springboot的膳食营养健康管理系统

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统有管理员,用户两个角色。 用户有首页,膳食信息,膳食食材,膳食资讯,在线客服&#xff…

ChatGPT搜索免费开放:AI搜索引擎挑战谷歌霸主地位全面分析

引言 2025年2月6日,OpenAI宣布ChatGPT搜索功能向所有用户免费开放,且无需注册登录。这一重大举措在搜索引擎行业引发巨大反响,有观点认为"谷歌搜索时代即将结束"。本文将深入分析ChatGPT生成式AI搜索对谷歌搜索业务及全球搜索市场…

半导体制造工艺讲解

目录 一、半导体制造工艺的概述 二、单晶硅片的制造 1.单晶硅的制造 2.晶棒的切割、研磨 3.晶棒的切片、倒角和打磨 4.晶圆的检测和清洗 三、晶圆制造 1.氧化与涂胶 2.光刻与显影 3.刻蚀与脱胶 4.掺杂与退火 5.薄膜沉积、金属化和晶圆减薄 6.MOSFET在晶圆表面的形…

.NET周刊【1月第3期 2025-01-19】

国内文章 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(一):从.NET IoT入门开始 https://www.cnblogs.com/GreenShade/p/18667671 文章介绍了一款基于树莓派Zero 2W和.NET技术的智能桌面机器人。作者…

机器学习 - 需要了解的条件概率、高斯分布、似然函数

似然函数是连接数据与参数的桥梁,通过“数据反推参数”的逆向思维,成为统计推断的核心工具。理解它的关键在于区分“参数固定时数据的概率”与“数据固定时参数的合理性”,这种视角转换是掌握现代统计学和机器学习的基础。 一、在学习似然函…