如何在Fedora上为SSH设置双因素身份验证

本文介绍如何使用Google Authenticator以更安全的方式访问远程Linux系统,从而在Fedora上为SSH设置双因素身份验证。

每天都有很多安全漏洞被报道,我们的数据处于危险之中。 尽管SSH是一种与Linux系统远程建立连接的安全方式,但是,如果他们窃取了您的SSH密钥,未知用户仍可以访问您的Linux机器,即使您禁用密码或仅允许SSH连接公钥和私钥。

在本文中,我们将解释如何使用Google AuthenticatorFedora Linux发行版上为SSH设置双因素身份验证( 2FA ),以通过提供TOTP基于时间的一次性)以更安全的方式访问远程Linux系统密码 )号码由移动设备上的验证器应用程序随机生成。

请注意,您可以为与TOTP算法兼容的移动设备使用任何双向身份验证应用程序。 有许多支持TOTPGoogle身份验证器的 Android或IOS免费应用程序,但本文使用Google身份验证器作为示例。

在Fedora上安装Google身份验证器

首先,使用以下dnf命令在Fedora服务器上安装Google身份验证器应用程序。

$ sudo dnf install -y google-authenticator
在Fedora中安装Google身份验证器

在Fedora中安装Google身份验证器

安装Google身份验证器后,您现在可以运行该应用程序。

$ google-authenticator

该应用程序会提示您一些问题。 以下片段向您展示如何回答相当安全的设置。

Do you want authentication tokens to be time-based (y/n) y Do you want me to update your "/home/user/.google_authenticator" file (y/n)? y
生成身份验证令牌

生成身份验证令牌

该应用程序为您提供密钥,验证码和恢复代码。 将这些密钥保存在安全的安全位置,因为如果丢失移动设备,这些密钥是访问服务器的唯一方法。

设置手机身份验证

在您的手机上,转到应用商店Google PlayiTunes,然后搜索Google身份验证器并安装该应用程序。

现在,在手机上打开Google身份验证器应用程序,扫描Fedora终端屏幕上显示的QR码。 一旦QR码扫描完成,您将获得验证者应用程序随机生成的数字,并在每次远程连接到Fedora服务器时使用此编号。

使用身份验证器扫描QR码

使用身份验证器扫描QR码

完成Google身份验证器配置

Google身份验证器应用程序会提示进一步的问题,以下示例说明如何应答这些问题以设置安全配置。

完成Google身份验证器设置

完成Google身份验证器设置

现在,您需要配置SSH以使用新的双向身份验证,如下所述。

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

要将SSH配置为使用身份验证器应用程序,首先需要使用公共SSH密钥建立SSH连接,因为我们将禁用密码连接。

在服务器上打开/etc/pam.d/sshd文件。

$ sudo vi /etc/pam.d/sshd

注释掉文件中的auth substack password-auth行。

#auth       substack     password-auth

接下来,将以下行放在文件末尾。

auth sufficient pam_google_authenticator.so

保存并关闭文件。

接下来,打开并编辑/ etc / ssh / sshd_config文件。

$ sudo vi /etc/ssh/sshd_config

搜索ChallengeResponseAuthentication行并将其更改为yes

ChallengeResponseAuthentication yes

搜索PasswordAuthentication行并将其更改为no

PasswordAuthentication no

接下来,将以下行放在文件末尾。

AuthenticationMethods publickey,password publickey,keyboard-interactive

保存并关闭该文件,然后重新启动SSH。

$ sudo systemctl restart sshd

在Fedora上测试双因素身份验证

现在尝试远程连接到您的服务器,它会要求您输入验证码。

$ ssh [email protected]

Verification code:

验证码由您的身份验证器应用程序在您的手机上随机生成。 由于生成的代码每隔几秒就会更改一次,因此您需要在创建新代码之前快速输入。

验证者验证码

验证者验证码

如果输入错误的验证码,您将无法连接到系统,并且您将收到以下权限被拒绝错误。

$ ssh [email protected]

Verification code:
Verification code:
Verification code:
Permission denied (keyboard-interactive).
结论

通过实现这种简单的双向身份验证,您为系统添加了额外的安全层,并且这使得未知用户更难以访问您的服务器。