一、什么是双因子认证

GitHub:https://github.com/LCTT/WeApp-Password
双因子认证(即 2FA),是一种通过组合两种不同的验证方式进行用户身份验证的机制。
在这种多重认证的系统中,用户需要通过两种不同的认证程序:
(1)提供他们知道的信息(如用户名/密码)
(2)再借助其他工具提供用户所不知道的信息(如用手机生成的一次性密码)

二、目的

实现登录Linux 服务器时,除了输入用户名密码外,需要输入一次性的动态口令才能验证成功。

三、在 Linux 系统中安装 Google 身份验证器服务器端组件

生成动态口令的其中一个因素是时间,需要保持终端设备和服务器的系统时间一致,才能生成同一的动态口令
简单说下chrony:chrony 是网络时间协议的(NTP)的另一种实现,与网络时间协议后台程序(ntpd)不同,它可以更快地更准确地同步系统始终。

三、安装前准备

3.1、安装依赖

yum -y nstall gcc make pam-devel libpng-devel libtool wget git

3.2、添加阿里云epel源:

RHEL 6/Centos 6
wget O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
RHEL 7/Centos 7
wget O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

在 CentOS 上安装 Google 身份验证器服务器端组件,启用epel 之后,运行:

yum install google-authenticator

3.3、安装依赖

yum -y install gcc make pam-devel libpng-devel libtool wget git

3.4、安装Qrencode,谷歌身份验证器需要调用该程序生成二维码并显示

yum install -y qrencode

3.5、安装谷歌身份验证器

wget https://github.com/google/google-authenticator-libpam/archive/1.04.tar.gz#解压
tar zxvf 1.04.tar.gz
cd google-authenticator-libpam-1.04# 进行编译和安装
./bootstrap.sh && ./configure && make && make install

如果构建成功,你会在目录中看到 pam_google_authenticator. 和 和 google-authenticator 两个二进制文件。

3.6、使用以下命令生成验证密钥
google-authenticator

生成的二维码:

**3.7、**在二维码和密钥字符串后面,接着显示了一个当前的校验码和几个紧急密钥。紧急密钥你可以另行保存的一个安全的地方,以防你在无法使用 Google 身份验证器应用或“运维密码”时使用(紧急密钥是 8 位的,不同于普通的 6 位密钥,也是一次性使用的)。

保存 Google 服务器端组件的配置文件,Google 身份验证器虽然运行了,但是相关设置还没有保存,接下来会提示保存:

意思是:你想将配置文件更新到 /root/.google_authenticator 保存吗?输入 y 回车。

禁止同一令牌多次登录:

意思是:你是否要禁用同一密钥多次登录,这将限制你每 30 秒只能使用该密钥登录一次,但这能够让你可以更多地被提醒受到了中间人攻击,甚至能够防止这种攻击。输入 y 回车。

时间容错设置:

这个可根据实际情况进行配置,一般一分钟就足够了。输入 y回车。

暴力破解防护:

意思是:为了避免暴力破解,可以启用速率限制,默认情况下,每 30 秒只能尝试 3 次。输入 y回车

配置完成:
配置完成后会在home目录下生成一个权限为 400 的隐藏文件,如下图所示:

3.8、打开微信小程序:
打开微信,依次点击“发现”,“小程序”,输入“运维密码”并搜索。
点击“运维密码”进入应用,然后点击列表下方的“添加场景”。 这会调起“扫一扫”功能,请扫描配置 google-authenticator 时所生成的二维码,然后会识别出该场景信息,你可以根据需要修改场景信息,点击确定添加场景。
这样 Google 身份验证器就和“运维密码”匹配上了。下面我们要使 SSH 服务可以支持该验证。
3.9、配置SSH服务
添加认证模块
使用如下命令在 /etc/pam.d/sshd 文件添加认证模块

在 Centos 6.6 或更低的版本中如果遇到无法进行 google-authenticator 验证的情况,请将 auth required pam_google_authenticator.so放在 /etc/pam.d/sshd 文件的最顶端进行测试一下。

配置挑战式密码认证:

vim /etc/ssh/sshd_config
passwordAuthentication yes
ChallengeResponseAuthentication yes #配置挑战式密码认证
UsePAM yes
systemctl restart sshd #重启 sshd 服务

切记:服务器时间都得一致,因为这个错误浪费了一些时间。
本文档在centos7-7.2上都测试成功了,不同的环境可能有些小的误差。
参考博客:http://blog.csdn.net/weifangan/article/details/73332029

SSH通过“运维密码”小程序实现 SSH 双因子认证相关推荐

  1. 运势运程算命小程序v1.2.0 功能模块+微信小程序+前端+后端+新增每日星座卡片

    运势运程算命小程序开源源码最新更新日志: 新增测算栏目支付成功模版消息提醒,增加留存率.新增每日星座卡片.单向历,请求缓存解决请求慢问题.修复测算出生日期开始时间,从 1979 更改为 1918 运势 ...

  2. 「运维有小邓」为什么网络日志如此重要?

    「运维有小邓」为什么网络日志如此重要? 如果你对网络安全有所关注,那你一定听说过日志审计.在本文中,我们将讨论日志审计的重要性,以及它如何帮助改善你的网络安全状况.日志审计的定义非常简单.当系统内部发 ...

  3. 糕头:二维火小程序初探

    2018 年 11 月 25 日,由又拍云主办的 Open Talk | 2018 小程序开发者沙龙杭州站圆满结束,二维火前端开发工程师糕头在活动上作了<二维火小程序初探>的分享. &qu ...

  4. 运维工程师小张的日记

    我是一名来自XSKY的运维工程师小张. 图片来源于网络 应公司市场部同学的邀请,我今天用日记的方式来向大家讲述我工作中忙碌又普通的一天. 2020年12月X日,晴,某金融客户变更日. 8:30 客户变 ...

  5. 芝麻二维码生成器小程序

    芝麻二维码生成器小程序是一个可以很方便的生成表白二维码的小程序 微信扫一扫, 就可以使用芝麻二维码小程序 进入小程序后,点击,生成码 将生成的表白二维码发送给好友

  6. 【微信小程序控制硬件14 】 微信小程序蓝牙+WiFi双控制ESP32-C3应用示范;(附带Demo)

    文章目录 一.前言 二.设备核心代码 2.1 蓝牙控制 2.2 WiFi控制 2.3 外设驱动 三.微信小程序核心代码 3.1 蓝牙搜索 3.2 蓝牙服务发现 四.感谢 另外,不要把我的博客作为学习标 ...

  7. 【高效运维篇】如何通过双因子认证保证堡垒机安全访问IT资源

    在日常使用堡垒机进行IT运维时,用户使用账户密码登录堡垒机后,即可对其具备权限的IT资源进行相应的操作或访问.而用户的堡垒机账户密码一旦被泄露,意味着无关人员可随意访问具备权限的IT资源,企业数据安全 ...

  8. 快速创建认证小程序无需交300元认证费的方法

    该方法采用法人人脸识别方式替代小额打款等认证流程,极大的减轻了小程序主体.类目资质信息收集的人力成本. 只需收集法人姓名.法人微信.企业名称.企业代码信息这四个信息,便可以向企业法人下发一条模板消息来 ...

  9. 微信小程序开发01 双线程模型:为什么小程序不用浏览器的线程模型?

    你好,我是俊鹏,今天是第一节课,我想和你聊一聊微信小程序表层知识中的双线程模型.主要探讨一下它的技术背景.线程间的分工和通信模式. 在工作以及一些技术分享中,我经常被人问到这样一个问题:"微 ...

最新文章

  1. spark-submit --files 动态加载外部资源文件
  2. 2020职场AI技能排行榜:TensorFlow热度飙升,Python最火,市场部也在学
  3. Xcode - Other Linker Flags
  4. 软件开发打败了 80 %的程序员
  5. 组态王浏览器java_1工程浏览器是组态王的集成开发环境在这里可以
  6. 神经网络学习之----Hopfield神经网络(代码实现)
  7. Spire.XLS 教程:从C#的Excel形状中提取文本和图像
  8. mysql 压缩版安装
  9. livebos--iframe使用
  10. matlab feval 函数说明,Matlab feval函数
  11. 线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze
  12. P2408- 不同子串个数【SA】
  13. #窗体整人小程序_Excel VBA和文件夹-1.8通过对话框灵活选定文件的小技巧
  14. 机器学习降维-深度AI科普团队
  15. EMC -- Windows下卸载 Content Server
  16. 原来 Kylin 的增量构建,大有学问! | 原力计划
  17. Scala:输入输出
  18. HDU 4272 LianLianKan(状压DP)题解
  19. java课堂点名和提问程序_Java程序设计作业.md
  20. 天都云13元1个月便宜VPS,40SSD1核2G内存无限流量

热门文章

  1. 基于C语言的电信数据自注册代码实现
  2. 如何手动开启O2优化
  3. 福师《计算机应用基础》期末考试a卷数据是,奥鹏福师2020年《计算机应用基础》期末试卷A卷2页.doc...
  4. 【电商】mysql 建表的一些规则 和注意事项
  5. LeetCode1143
  6. 太阳镜颜色深浅有考究
  7. [No00007F]2016-面经[下] 英文简历写作技巧
  8. WebAPIs-2023.3.31(-4.7)
  9. Pytorch模型中的GPU运算详解与实践
  10. 燧原科技与飞桨完成 I 级兼容性测试,可用于文字识别等多个场景