如何在 Debian服务器 上启用双因子身份验证

栏目: 服务器 · 发布时间: 6年前

内容简介:SSH 支持对登录要求不止一个身份验证方法,我们首先启用密钥和密码验证。在 /etc/sh/sshd_config 中的 SSH 服务器配置文件中的 AuthenticationMethods 选项中设置了身份验证方法。当在 /etc/ssh/sshd_config 中新加一行配置,如下。这样在建立sshliaSSH 需要提交一个 SSH 密钥,然后提示输入密码:

双因子身份验证就是指,需要两种身份验证才能完成账号有效性的验证,可以是密码、SSH 密钥,也可以是第三方服务,比如 Google Authenticator。这意味着单个验证方式的缺陷,不会影响账号的安全。本文我们将介绍如何在 Debian 服务器上启用双因子验证。

如何在 Debian服务器 上启用双因子身份验证

请注意,本文涉及到多次修改 SSH 配置,当你修改配置时,请确保有至少两个到服务器终端的连接。打开的终端将一直保持,即便 SSH 服务重启。第二终端意味着你可以修复你在SSH配置的错误。

密钥和密码验证的SSH

SSH 支持对登录要求不止一个身份验证方法,我们首先启用密钥和密码验证。

在 /etc/sh/sshd_config 中的 SSH 服务器配置文件中的 AuthenticationMethods 选项中设置了身份验证方法。

当在 /etc/ssh/sshd_config 中新加一行配置,如下。这样在建立sshliaSSH 需要提交一个 SSH 密钥,然后提示输入密码:

AuthenticationMethods "publickey,password"

如果你想要对指定用户设置这些方法,那么请使用以下附加配置:

Match User joseph
     AuthenticationMethods "publickey,password"

当你已经编辑或保存了新的 sshd_config 文件,你应该通过运行以下程序来确保你没有犯任何错误:

sshd -t

任何导致 SSH 不能启动的语法或其他错误都将在这里标记出来。当 ssh-t 运行时没有错误,使用 systemctl 重新启动 SSH:

systemctl reload sshd

现在,你可以使用新终端登录,以核实你会被提示输入密码并需要 SSH 密钥。如果你用 ssh -v,例如 ssh -v joseph@example.com ,你将可以看到登录的每一步,可以加多个v来获取更多的 debug 信息。

注意,如果你确实将密码设置成必需的身份验证方法,你要确保将 PasswordAuthentication 选项设置成 yes。

使用 Google Authenticator 的 SSH

Google 在 Google 自己的产品上使用的双因子身份验证系统可以集成到你的 SSH 服务器中。如果你已经使用了Google Authenticator,那么此方法将非常方便。

虽然 libpam-google-authenticator 是由 Google 编写的,但它是开源的。此外 Google Authenticator 是由 Google 编写的,但不需要 Google 帐户也能工作,多亏了 Sitaram Chamarty 的贡献。

如果你还没有在手机上安装和配置 Google Authenticator,请参阅 这里的介绍

首先,我们需要在服务器上安装 Google Authenticatior 安装包。使用以下命令安装所需的软件包:

apt-get update
apt-get install libpam-google-authenticator

现在,我们需要在你的手机上使用 Google Authenticatior 工具注册服务器。这是通过运行我们刚才安装的 Debian 软件包完成的,在命令行下运行:

google-authenticator

运行这个程序时,会问到几个问题。你应该以适合你的设置的方式回答,最安全的选项是对每个问题回答y。如果以后需要更改这些选项,你可以简单地重新运行 google-authenticator 并选择不同的选项。

当你运行 google-authenticator 时,一个二维码会被打印到终端上,二维码下方的代码样例如下:

Your new secret key is: 75YD5PTE6R65BYFR2AWQGUV6FE
Your verification code is 781629
Your emergency scratch codes are:
  12321432
  29069242
  34406891
  34387624
  79357602

你应该将所有这些代码记录到一个像密码管理器一样安全的位置。 emergency scratch codes 是单一的使用代码,应急时使用。即使你的手机不可用,它总是允许你访问。

要将服务器注册到 Authenticator App中,只需打开应用程序并点击右下角的红色加号即可。然后选择扫描条码选项,扫描打印到终端的二维码。你的服务器和应用程序现在连接。

回到服务器上,我们现在需要编辑用于 SSH 的 PAM (可插入身份验证模块),以便它使用我们刚刚安装的身份验证器安装包。PAM 是独立系统,负责 Linux 服务器上的大多数身份验证。

需要修改的 SSH PAM 文件位于 /etc/pam.d/sshd ,用以下命令编辑:

vim /etc/pam.d/sshd

在文件顶部添加以下行:

auth required pam_google_authenticator.so

此外,我们还需要注释掉这一行 “@include common-auth”,这样 PAM 就不会提示输入密码,修改后如下:

# Standard Un*x authentication.
# @include common-auth

接下来,我们需要编辑 SSH 服务器配置文件:

vim /etc/ssh/sshd_config

改变 ChallengeResponseAuthentication 的值为 yes,以便我们启用键盘交互的认证方式:

ChallengeResponseAuthentication yes

接下来,添加以下代码行来启用两个身份验证方案:SSH 密钥和谷歌认证器(需要键盘交互):

AuthenticationMethods "publickey,keyboard-interactive"

在重新加载 SSH 服务器之前,最好检查一下在配置中没有出现任何错误,执行以下命令测试:

sshd -t

如果没有标识出任何错误,用新的配置重载 SSH:

systemctl reload sshd.service

现在一切都应该开始工作了。现在,当你登录到你的服务器时,你将需要使用 SSH 密钥,并且当你被提示输入:

Verification code:

打开 Authenticator APP 并输入为您的服务器显示的 6 位代码。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高性能JavaScript

高性能JavaScript

Nicholas C.Zakas / 丁琛、赵泽欣 / 电子工业出版社 / 2010-11 / 49.00元

如果你使用JavaScript构建交互丰富的Web应用,那么JavaScript代码可能是造成你的Web应用速度变慢的主要原因。《高性能JavaScript》揭示的技术和策略能帮助你在开发过程中消除性能瓶颈。你将会了解如何提升各方面的性能,包括代码的加载、运行、DOM交互、页面生存周期等。雅虎的前端工程师Nicholas C. Zakas和其他五位JavaScript专家介绍了页面代码加载的最佳方......一起来看看 《高性能JavaScript》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试