如何为SSH登录设置双因素身份验证(Google身份验证器)

在本文中,我将向您展示如何在Linux下设置和配置双重身份验证的SSH。

默认情况下,SSH已经使用远程计算机之间的安全数据通信,但如果你想要一些额外的安全层添加到您的SSH连接,您可以添加谷歌身份验证器双因素验证 )模块,使您可以输入一个随机在连接到SSH服务器-时间密码(TOTP)的验证码。 你必须当您连接到您的智能手机PC输入验证码。 该谷歌身份验证器是一个开放源代码的模块,包括由谷歌开发的一次性通行码(TOTP)验证令牌的实现。 它支持多种移动平台,以及PAM( 可插拔验证模块 )。 这些一次性通行码使用由OATH( 倡议开放认证 )创建开放标准的产生。
SSH双因素身份验证

SSH双因素身份验证

在本文中,我将向你展示如何设置和红帽 ,CentOS的 ,FedoraUbuntu,Linux Mint的Debian配置双因素身份验证的SSH。

安装Google身份验证器模块

打开要设置双因素身份验证机,并安装以下PAM库与所需的PAM模块与谷歌认证模块的正常工作,开发库一起。 在Red Hat,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
下载并解压缩目录下的谷歌身份验证模块(假设你已经登录的主目录)。
# 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
一旦运行“ 谷歌认证 ”命令,它会提示你一个严重的问题。 只需输入“Y”( )因为在大多数情况下的答案。 如果出现错误,可以再次输入“ 谷歌认证 '命令重置设置。
  1. 你想认证令牌是基于时间(Y / N)Y
这个问题后,你会得到你的“ 密钥 ”和“ 紧急代码 ”。 地方写下这些细节,我们需要的“密钥 ”以后设置谷歌Authenticator应用程式。
[root@howtoing 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@howtoing.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”( ),如下图所示。
Do you want me to update your "/root/.google_authenticator" file (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
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
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

配置SSH以使用Google身份验证器模块

打开PAM配置文件“ 上将/etc/pam.d/sshd'和下面的行添加到文件的顶部。
auth       required     pam_google_authenticator.so
接下来,打开SSH的配置文件在“/ etc / SSH / sshd_config'中 ,并滚动精细,说行了。
ChallengeResponseAuthentication no
将其更改为“ ”。所以,它变成这样。
ChallengeResponseAuthentication yes
最后,重新启动SSH服务,采取新的变化。
# /etc/init.d/sshd restart

配置Google Authenticator应用

启动谷歌身份验证器应用到智能手机中。 按菜单 ,然后选择“ 设置帐户 ”。 如果没有这个程序,你可以下载和安装谷歌验证器Android / iPhone /黑莓设备应用程序。
Google Authenticator设置帐户

Google Authenticator设置帐户

“Enter提供了重要 ”。
Google身份验证器密钥

输入Google身份验证器密钥

添加您的帐户“ 名称 ”并输入“ 密钥 ”前面生成。
Google身份验证器帐户名称

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

它会生成一次性密码( 验证码 ),将不断改变您的手机上每30秒
Google Authenticator一次性密码

Google Authenticator一次性密码

现在尝试通过SSH登录,您将与谷歌身份验证码验证码 )和密码 ,只要你尝试通过SSH登录提示。 你只有30秒内输入这个验证码,如果你错过了它会重新生成新的验证码。
login as: howtoing
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@howtoing ~]#
如果你没有智能手机,你也可以使用一个Firefox插件GAuth验证器做双因素认证。 重要提示 :双因素认证与基于密码SSH登录工作。 如果你使用任何私有/公共密钥SSH会话 ,它将忽略双因素身份验证和登录你直接。