前言

默认情况下,SSH已经在远程机器之间使用安全的数据通信;但是如果你想为自己的SSH连接添加另外某种安全层,可以添加谷歌身份验证器(Google Authenticator)双因子验证模块,该模块让你可以在连接到SSH服务器时,输入一个随机的一次性密码(TOTP)验证码。你在连接时,就得从智能手机或个人电脑输入这个验证码。

谷歌身份验证器是一种开源模块,实施了由谷歌开发的一次性通行码(TOTP)验证令牌。除了PAM(可插入验证模块)外,它还支持几种移动平台。这些一次性通行码是使用OATH(开放验证组织)制定的开放标准生成的。

SSH双因子验证

我在本文中将为大家介绍如何在红帽、CentOS、Fedora、Ubuntu、Linux Mint和Debian等系统环境下,建立和配置SSH,以实现双因子验证机制。

具体实现

1、安装谷歌身份验证器模块

打开你想建立双因子验证机制的那个机器,安装下列PAM库以及PAM模块与谷歌身份验证器模块顺利协同运行所需要的开发库。

在红帽、CentOS和Fedora等系统上,安装‘pam-devel’安装包。

# yum install pam-devel make gcc-c++ wget

在Ubuntu、Linux Mint和Debian等系统上,安装‘libpam0g-dev’安装包。

# apt-get install libpam0g-dev make gcc-c++ wget

下载谷歌身份验证器模块,并解压缩到Home目录下(假设你已经登录到根目录的home目录)。

# cd /root

# wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2

# tar -xvf libpam-google-authenticator-1.0-source.tar.bz2

输入下列命令,在系统上编译和安装谷歌身份验证器模块。

# cd libpam-google-authenticator-1.0

# make

# make install

# google-authenticator

一旦你运行了‘google-authenticator’命令,它会向你提示一系列问题。在大多数情况下,只要输入‘y’(yes)作为答案。要是出了什么问题,你可以再次输入‘google-authenticator’命令,以便重置设置。

◦你希望验证令牌基于时间吗(y/n)?y

在这个问题之后,你会获得你的“密钥”和“应急验证码”。把这些详细信息记在某个地方,以后我们在安装谷歌身份验证器应用程序时要用到“密钥”。

[root@tecmint libpam-google-authenticator-1.0]# google-authenticator

Do you want authentication tokens to be time-based (y/n) y

https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint.com%3Fsecret%3DXEKITDTYCBA2TLPL

Your new secret key is: XEKITDTYCBA2TLPL

Your verification code is 461618

Your emergency scratch codes are:

65083399

10733609

47588351

71111643

92017550

下一步,按安装向导的提示进行操作。在大多数情况下,只要输入‘y’(yes)作为答案,如下所示。

Do you want me to update your "/root/.google_authenticator" file (y/n) y

你希望我更新你的“/root/.google_authenticator”文件吗(y/n)?y

Do you want to disallow multiple uses of the same authentication

token? This restricts you to one login about every 30s, but it increases

your chances to notice or even prevent man-in-the-middle attacks (y/n) y

你希望禁止多次使用同一个验证令牌吗?这限制你每次登录的时间大约是30秒,

但是这加大了发现或甚至防止中间人攻击的可能性(y/n)?y

By default, tokens are good for 30 seconds and in order to compensate for

possible time-skew between the client and the server, we allow an extra

token before and after the current time. If you experience problems with poor

time synchronization, you can increase the window from its default

size of 1:30min to about 4min. Do you want to do so (y/n) y

默认情况下,令牌保持30秒有效;为了补偿客户机与服务器之间可能存在的时滞,

我们允许在当前时间前后有一个额外令牌。如果你在时间同步方面遇到了问题,

可以将窗口从默认大小即1分30秒加大到约4分。你希望这么做吗(y/n)?y

If the computer that you are logging into isn't hardened against brute-force

login attempts, you can enable rate-limiting for the authentication module.

By default, this limits attackers to no more than 3 login attempts every 30s.

Do you want to enable rate-limiting (y/n) y

如果你登录的那台计算机没有经过固化,以防范运用蛮力的登录企图,可以对验证模块

启用尝试次数限制。默认情况下,这限制攻击者每30秒试图登录的次数只有3次。

你希望启用尝试次数限制吗(y/n)?y

2、配置SSH,以便使用谷歌身份验证器模块

打开PAM配置文件‘/etc/pam.d/sshd’,把下面这行添加到该文件的顶部。

auth required pam_google_authenticator.so

下一步,打开SSH配置文件‘/etc/ssh/sshd_config’,精细滚动,找到显示下面内容的这一行:

ChallengeResponseAuthentication no

把它更改成“yes”。所以,它现在变成了这样子:

ChallengeResponseAuthentication yes

最后,重启SSH服务,以便让新的变更生效。

# /etc/init.d/sshd restart

3、配置谷歌身份验证器应用程序

在智能手机中运行谷歌身份验证器应用程序。摁Menu(菜单),选择“Setup an account”(建立一个帐户)。如果你没有这个应用程序,可以下载谷歌身份验证器应用程序(http://support.google.com/accounts/bin/answer.py?hl=en&answer=1066447),并安装到你的安卓/iPhone/黑莓设备上。

谷歌身份验证器建立帐户

摁“Enter key provided”(输入提供的密钥)。

输入谷歌身份验证器密钥

添加你的帐户“Name”(名称),输入之前生成的“密钥”。

谷歌身份验证器帐户名称和密钥

它会生成一次性密码(验证码),该一次性密码在你的手机上每30秒就会不断变化。

谷歌身份验证器一次性密码

现在试着通过SSH进行登录,你会发现:每当你试图通过SSH进行登录,系统会提示你输入谷歌身份验证器代码(验证码)和密码。你只有30秒的时间来输入这个验证码;要是错过了时间,它会重新生成新的验证码。

login as: tecmint

Access denied

Using keyboard-interactive authentication.

Verification code:

Using keyboard-interactive authentication.

Password:

Last login: Tue Apr 23 13:58:29 2013 from 172.16.25.125

[root@tecmint ~]#

温馨提示:

如果你没有智能手机,还可以使用一个名为GAuth Authenticator的火狐插件(https://marketplace.firefox.com/app/gauth-authenticator/),实现双因子验证。

这点很重要:双因子验证与基于密码的SSH登录配套使用。要是你使用任何私钥/公匙SSH会话,它会忽视双因子验证,让你直接登录进去。

原文地址:http://www.tecmint.com/ssh-two-factor-authentication/

如何为SSH登录建立双因子验证机制(谷歌身份验证器)?相关推荐

  1. 使用谷歌身份验证器增强SSH安全

    一般大家都是使用账号和密码远程SSH登录管理服务器.但SSH账号和密码很容易泄露,或者经常遭遇暴力破解.咨询过前同事赛赛,他们目前使用了谷歌身份验证器.查看了谷歌身份验证器的github和其它网上文档 ...

  2. ssl 客户端证书验证_SSL客户端身份验证:这是信任的问题

    ssl 客户端证书验证 [编者注:本文介绍了如何为Domino 4.6和4.6.1设置SSL客户机认证.] 互联网上最新的行业流行词是SSL. 但是SSL真正需要提供什么? 安全套接字层(SSL)是一 ...

  3. mybatis学习(10): sql server身份验证和windows身份验证

    SQL Server 支持两种身份验证模式,即 Windows 身份验证模式和混合模式. Windows 身份验证是默认模式(通常称为集成安全),因为此 SQL Server 安全模型与 Window ...

  4. 使用谷歌身份验证器(Google Authenticator)保护你的后台

    为何要使用谷歌身份验证器 普通的网站只使用账号.密码.图形验证码进行后台登录.根据我(作为站长)多年的经验来看,这种方式安全性很低,尤其是使用 http 协议,明文的帐号和密码相当于在网络上裸奔.如果 ...

  5. 谷歌身份验证器 手表_6条使您的三星手表更加Google-y的提示

    谷歌身份验证器 手表 Samsung 三星 Samsung Galaxy watches are, arguably, the best smartwatches for Android phones ...

  6. 为什么用户不敢用谷歌身份验证器?

    应用场景 在我们进行大额资金交易的时候,或者需要预防盗号等安全性强的操作时,会用到两步验证.这类两步验证一般有3种形式:手机短信验证(一般是注册手机).邮件验证(一般是绑定邮箱).第三方验证工具:验证 ...

  7. 【Django】使用谷歌身份验证Google authenticator

    1.说明 为了安全,可以使用Google authenticator作为二次验证的条件,使用起来很简单,只需要使用Google authenticator APP扫描一下二维码即可得到六位数验证码,验 ...

  8. 使用C++实现谷歌身份验证器(Google Authenticator)

    使用C++实现谷歌身份验证器(Google Authenticator) 本机环境: windows10 x64位运行环境 1.进入网站:http://slproweb.com/products/Wi ...

  9. 二次验证码小程序与谷歌身份验证器不同点是?

    名称1[二次验证码]小程序 名称2 谷歌身份验证器(Google Authenticator) 粗略对比两个产品异同 [二次验证码]小程序 搜索:微信搜索.微信目前65个小程序入口,倒是容易找到它 使 ...

最新文章

  1. 【zabbix学习笔记之二】部署zabbix-server端
  2. dsp之BF531笔记
  3. js md5 过滤表情 数据签名
  4. Redis的Linux单机版安装
  5. java之hibernate之基于外键的一对一单向关联映射
  6. [JavaWeb-JavaScript]JavaScript特殊语法
  7. extern关键字讲解
  8. Vite --- 创建Vue3项目
  9. 课程目标IO java
  10. 区块链制作的比特币的缺陷
  11. 读懂现金贷产品的客群风险标签维度
  12. springboot 全局异常处理类
  13. linux 查看设备 usb设备驱动程序,Linux USB设备驱动程序未被探测
  14. jpg格式图片怎么压缩?jpg图片如何压缩到最小?
  15. 分享一个07版的office, 有密匙的。
  16. 统计双色球各个数字的中奖概率的脚本
  17. 生成对抗网络 – Generative Adversarial Networks | GAN
  18. Android自定义输入法软键盘
  19. 多吃巧克力多笑脑子会更聪明
  20. 现在好的微博营销技巧都有哪些呢?

热门文章

  1. 四种方法解决:Windows10下使用SVN文件夹不显示小绿勾
  2. MySQL高级(一)
  3. 2.15范冰增长黑客读书笔记
  4. java excel 边框颜色_poi生成excel整理(设置边框/字体/颜色/加粗/居中/)[转]
  5. 超声检测的不同扫描方式
  6. Crossbar率先发难—欲彻底埋葬英特尔的3D XPoint技术
  7. 微信小程序| Ngork内网传统+后台API通信例子
  8. ABBYY15Mac最新版OCR文字识别软件
  9. 火影忍者ol手游服务器注册上限怎么办,火影忍者ol手游进不去是怎么办 火影忍者ol手游上不去原因详解...
  10. win7系统ftp服务器密码修改,win7 ftp服务器密码