为服务器SSH登录增加2FA验证

安装NTP模块并设置时区

安装NTP模块

一般的服务器NTP服务默认是不安装的,需要安装NTP模块【7】并启用。

运行以下指令检查你的NTP模块是否已启用,已启用则忽略安装NTP模块的内容

timedatectl

如果你的返回内容和以下图片一样,则表示NTP未启用

SSH【3】登录你的服务器后,更新apt【8】包,安装Chrony【9】

sudo apt update
sudo apt install chrony

安装后会自动启用NTP模块,再次运行timedatectl【10】指令,预计返回以下内容:

设置时区

以设置时区为上海举例,运行以下指令,依次回复5,69

sudo dpkg-reconfigure tzdata

配置 Google Authenticator

安装 Google Authenticator 模块

运行以下指令进行安装,Do you want to continue? 中回复y

sudo apt install libpam-google-authenticator

配置 Google Authenticator

运行以下指令进行配置,Do you want authentication tokens to be time-based (y/n) 回复y

google-authenticator

将会返回一个二维码,使用支持 TOTP【11】 的应用扫描二维码,如Google Authenticator【12】Apple PasswordAuthy

二维码下将尾随Your new secret key is:,也可以在 TOTP 的应用中输入密钥进行设置
在Enter code from app (-1 to skip):后输入你的验证码应用中的六位动态验证码

优先考虑安全性的话,下面四个问题的回答分别是yyny

这四个问题的中文翻译为:

  • 您是否希望我更新您的“/root/.google_authenticator”文件?(y/n)
  • 您是否希望禁止多次使用同一个身份验证令牌?这会将您限制为大约每 30 秒登录一次,但这会增加您发现甚至阻止中间人攻击【13】的机会 (y/n)
  • 默认情况下,移动应用每 30 秒生成一个新令牌。为了补偿客户端和服务器之间可能存在的时间偏差【14】,我们允许在当前时间前后各生成一个额外的令牌。这允许身份验证服务器和客户端之间最多存在 30 秒的时间偏差。如果您遇到时间同步不佳的问题,可以将窗口大小从默认的 3 个允许代码(一个前一个代码、当前代码、下一个代码)增加到 17 个允许代码(8 个前一个代码、当前代码和 8 个后一个代码)。这将允许客户端和服务器之间最多 4 分钟的时间偏差。是否要启用?(y/n)
  • 如果您登录的计算机未针对暴力破解【15】登录尝试进行强化,您可以为身份验证模块启用速率限制【16】。默认情况下,这会将攻击者每 30 秒的登录尝试次数限制为不超过 3 次。是否要启用速率限制?(y/n) y

为SSH开启2FA

编辑 PAM 配置文件以启用 Google Authenticator

路径为/etc/pam.d/sshd【17】,在顶部添加以下内容(这里推荐使用服务器面板进行编辑)并注释@include common-auth【19】,这将配合后面的配置禁用密码验证

auth required pam_google_authenticator.so

配置 SSH 服务

编辑 SSH 配置文件:/etc/ssh/sshd_config【20】

需要有以下内容,有预设则修改,无预设则添加:

 
PermitRootLogin yes
PasswordAuthentication no
KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

配置完成后重启ssh服务,以1panel为例,系统-SSH管理-重启

重新进行服务器SSH连接,效果如下所示,在经过证书验证后,还需要输入动态验证码才能成功连接

通过修改配置,还可以达成不同的ssh连接条件,以下给出部分示例(记得取消注释@include common-auth)
允许 root 登录,使用证书 + 密码 + 动态验证码三重SSH 验证

 
PermitRootLogin yes
PasswordAuthentication yes
KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,password,keyboard-interactive

允许 root 登录,使用密码 + 动态验证码双重SSH 验证

 
PermitRootLogin yes
PasswordAuthentication yes
KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods password,keyboard-interactive

推荐禁用密码验证的方式进行SSH连接,仅保留证书和动态验证码,即本文给出的例子

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

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

相关文章

AI大模型提示词工程研究报告:长度与效果的辩证分析

一、核心问题:提示词长度与模型性能的平衡 核心矛盾:提示词长度增加 → 信息丰富度↑ & 准确性↑ ↔ 计算成本↑ & 响应延迟↑ 二、详细机制分析 (一)长提示词的优势(实证数据支持) 案例类型短提…

HttpServletResponse源码解析

Java Servlet API 中 HttpServletResponse 接口的源码,这是 Java Web 开发中非常核心的一个接口,用于向客户端(通常是浏览器)发送 HTTP 响应。 public interface HttpServletResponse extends ServletResponse {int SC_CONTINUE …

AI基础概念

目录 1、ASR和STT区别 2、流式输出 定义 原理 应用场景 优点 缺点 3、Ollama 4、mindspore和deepseek r1 v3 5、DeepSeek R1/V3 用的哪个底层AI框架 6、HAI-LLM比tensorflow、pytorch还强么 1. 核心优势对比 2. 性能表现 3. 适用场景 总结 7、openai用的什么底层…

ubuntu20.04速腾聚创airy驱动调试

1.下载相关资料 下载包括:速腾airy产品手册.pdf、RSView(用于显示激光雷达数据)、3d数模文件、 RS-LiDAR-16用户手册 以下链接进行下载 https://www.robosense.cn/resources 2.连接线路后通过Wireshark抓包后进行本地IP配置 2.1按照线路连…

Redis的大key和热key如何解决

文章目录 Redis大Key一、什么是Redis大Key二、大Key的产生原因三、大Key的影响四、大Key的解决方案1. 检测大Key2. 解决方案(1) 数据拆分(2) 使用压缩算法(3) 使用合适的数据结构(4) 设置合理的过期时间(5) 合理清理(6) 配置优化 五、预防措施总结 Redis热key一、热Key问题的本…

恒温晶振与温补晶振的区别

在电子设备领域,晶振如同精准的“心脏起搏器”,为电路提供稳定的时钟信号。恒温晶振(OCXO)和温补晶振(TCXO)作为两类重要的晶体振荡器,在不同的应用场景中发挥着关键作用,它们的区别…

基于SpringBoot的在线考试智能监控系统设计与实现

目录 一.🦁前言二.🦁开源代码与组件使用情况说明三.🦁核心功能1. ✅算法设计2. ✅Java开发语言3. ✅Vue.js框架4. ✅部署项目 四.🦁演示效果1. 管理员模块1.1 用户管理 2. 教师模块2.1 考试管理2.2 浏览试题列表2.3 添加试题2.4 成…

0基础学Python系列【16】自动化邮件发送的终极教程:Python库smtplib与email详解

大家好,欢迎来到Python学习的第二站!🎉 Python自带了一些超好用的模块,可以让你不必从头写代码就能实现很多功能。比如数学计算、文件操作、网络通信等。花姐会挑选常用的一些模块来讲解,确保你能在实际项目中用到。🎉 本章要学什么? 接下来花姐会深入浅出的讲解下面…

环卫车辆定位与监管:安心联车辆监控管理平台--科技赋能城市环境卫生管理

一、 引言 城市环境卫生是城市文明的重要标志,也是城市管理的重要内容。随着城市化进程的加快,环卫作业范围不断扩大,环卫车辆数量不断增加,传统的管理模式已难以满足现代化城市管理的需求。为提高环卫作业效率,加强环…

GIS 数据质检:验证 Geometry 有效性

前言 在GIS开发中,数据的几何有效性直接影响分析结果的准确性。无效的几何(如自相交、空洞或坐标错误)可能导致空间计算失败或输出偏差。无论是Shapefile、GeoJSON还是数据库中的空间数据,几何质检都是数据处理中不可忽视的关键步…

AI大模型学习之基础数学:高斯分布-AI大模型概率统计的基石

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…

HarmonyOS性能优化——耗时操作减少

耗时操作减少 在应用开发中,避免主线程执行冗余和耗时操作至关重要。这可以降低主线程负载,提升UI响应速度。 避免主线程冗余操作 冗余操作是不必要的、重复执行且对程序功能无实质性贡献的操作。这些操作浪费计算资源,降低程序运行效率&a…

emscripten 编译 wasm 版本的 openssl

搭建emscripten环境【参考:https://emscripten.org/docs/getting_started/downloads.html】 下载openssl解压复制到emsdk目录 依次执行下列命令: cd emsdk #激活emsdk source ./emsdk_env.shcd opensslemconfigure ./Configure linux-x32 -no-asm -sta…

uniapp 实战新闻页面(一)

新闻系统 一、 创建项目 创建个人中心 page.json 配置 tabar "tabBar": {"color":"#666","selectedColor": "#31C27C","list": [{"text": "首页","pagePath": "pages/inde…

JAVA锁机制:对象锁与类锁

JAVA锁机制:对象锁与类锁 在多线程编程中,合理使用锁机制是保证数据一致性和线程安全的关键。本文将通过示例详细讲解 Java 中的对象锁和类锁的原理、用法及区别。 一、未加锁的并发问题 先看一段未加锁的代码: public class Synchronize…

maxcomputer 和 hologres中的EXTERNAL TABLE 和 FOREIGN TABLE

在阿里云的大数据和实时数仓产品中,MaxCompute 和 Hologres 都支持类似于 EXTERNAL TABLE 和 FOREIGN TABLE 的机制,但它们的实现和语义有所不同。 下面分别说明: ☁️ 一、MaxCompute 中的 EXTERNAL TABLE 和 FOREIGN TABLE 1. EXTERNAL T…

稳定币:从支付工具到金融基础设施的技术演进与全球竞争新格局

引言:稳定币的崛起与金融体系重构 2025年6月,全球稳定币市值突破2500亿美元历史大关,单年链上交易额高达35万亿美元——这一数字已超越Visa和万事达卡交易总和。这一里程碑事件标志着稳定币已从加密货币市场的边缘实验,蜕变为重构…

用 HTML、CSS 和 jQuery 打造多页输入框验证功能

多页输入框验证功能总结:使用 HTML、CSS 和 jQuery 实现 一、多页表单验证的核心概念与应用场景 多页输入框验证是指将复杂表单拆分为多个页面或步骤,逐步引导用户完成输入,并在每一步对用户输入进行验证的功能。这种设计具有以下优势: 提升用户体验:避免长表单带来的心…

DeepSpeed 深度学习学习笔记:高效训练大型模型

主要参考官网文档,对于具体内容还需参考官方文档 1. 引言:为什么需要 DeepSpeed? 大型模型训练的挑战 随着深度学习模型规模的爆炸式增长(从 BERT 的几亿参数到 GPT-3 的千亿参数,再到现在的万亿参数模型&#xff09…

编程基础:耦合

能帮到你的话,就给个赞吧 😘 文章目录 耦合:功能的单一性,功能越拆分则单一功能越好维护 耦合:功能的单一性,功能越拆分则单一功能越好维护