如何在Ubuntu 20.04上为SSH设置多重身份验证

SSH是一种“安全外壳协议”,用于通过不安全的网络安全地连接和管理远程Linux系统。 对于系统管理员来说,在远程服务器上执行日常任务非常有用。 因此,保护​​SSH服务器安全是任何系统管理员的重要组成部分。

默认情况下,您可以使用密码或使用私钥连接到SSH。 这意味着,这仅仅是单因素身份验证。 因此,在SSH服务器中实施多因素身份验证以增加额外的安全性是一个好主意。 在多因素身份验证中,您将需要提供系统用户密码和在移动设备上生成的另一个密码。 这将大大增强服务器的安全性。

在本教程中,我们将向您展示如何在Ubuntu 20.04 VPS上为SSH设置多因素身份验证。

先决条件

  • Ubuntu 20.04 VPS(我们将使用SSD 2 VPS计划)
  • 访问root用户帐户(或访问具有root特权的管理员帐户)

步骤1:登录到服务器并更新服务器操作系统软件包

首先,以root用户身份通过​​SSH登录到Ubuntu 20.04服务器:

ssh [email protected]_Address -p Port_number

您将需要用服务器各自的IP地址和SSH端口号替换“ IP_Address”和“ Port_number”。 此外,如有必要,将“ root”替换为管理员帐户的用户名。

开始之前,您必须确保服务器上安装的所有Ubuntu OS软件包都是最新的。 您可以通过运行以下命令来执行此操作:

apt-get update -y
apt-get upgrade -y

步骤2:安装Google Authenticator

我们将使用Google Authenticator进行多因素身份验证。 因此,您需要将Google Authenticator PAM模块安装到系统中。 您可以通过运行以下命令来安装它:

apt-get install libpam-google-authenticator -y

安装软件包后,请使用以下命令运行Google Authenticator:

google-authenticator

在安装过程中,将询问您以下问题:

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
  https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/[email protected]%3Fsecret%3D4XXQ2QA6FRV72SDM2JWSZTQJE4%26issuer%3D

ÿ 并击中 进入 接着说。 您应该在以下屏幕上看到QR码:

在ubuntu服务器上设置ssh两因素身份验证(2fa)

回答所有问题并点击 进入 完成如下所示的过程:

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, a new token is generated every 30 seconds by the mobile app.
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. This allows for a
time skew of up to 30 seconds between authentication server and client. If you
experience problems with poor time synchronization, you can increase the window
from its default size of 3 permitted codes (one previous code, the current
code, the next code) to 17 permitted codes (the 8 previous codes, the current
code, and the 8 next codes). This will permit for a time skew of up to 4 minutes
between client and server.
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) 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

步骤3:安装Google Authenticator应用程式

接下来,您需要在智能手机上安装Google Authenticator应用程序。 安装后,在您的手机上打开Goog​​le Authenticator并扫描上面的QR码。 扫描QR码后,您应该在手机上看到一个六位数的一次性密码,如下所示:

在ubuntu 20.04上启用ssh逐步说明

该密码将在30秒内过期,因此您需要打开Goog​​le Authenticator应用程序并查看新密码,才能通过SSH登录到Ubuntu服务器。

您还可以在上面的输出中看到密钥,验证码和紧急暂存码。 建议将其保存在安全的地方以备后用。

Your new secret key is: 4XXQ2QA6FRV72SDM2JWSZTQJE4
Your verification code is 423832
Your emergency scratch codes are:
  96469497
  84504151
  61871048
  79931657
  71052210

步骤4:将SSH配置为使用Google身份验证器

接下来,您还需要配置SSH以使用Google Authenticator。 您可以通过编辑文件/ etc / ssh / sshd_config对其进行配置:

nano /etc/ssh/sshd_config

更改以下行:

UsePAM yes
ChallengeResponseAuthentication yes

完成后保存并关闭文件。 然后,重新启动SSH服务以应用配置:

systemctl restart sshd

接下来,您将需要编辑/etc/pam.d/sshd文件并为SSH服务定义PAM规则:

nano /etc/pam.d/sshd

在下面添加以下行 @include common-auth

auth required pam_google_authenticator.so

保存并关闭文件。

步骤:5测试两因素身份验证

此时,您的SSH服务器现在已配置了多因素身份验证。 现在是时候进行连接和测试了。

在远程系统上,打开终端并通过SSH登录到服务器,如下所示:

ssh [email protected]

系统会要求您提供系统密码和Google Authenticator生成的验证码。 提供显示在Google Authenticator应用中的系统密码,然后点击 进入 登录到服务器,如下所示:

如何在Ubuntu服务器上配置两因素身份验证

恭喜你! 您的SSH服务器现在已通过多因素身份验证进行保护。

当然,如果您使用我们的托管托管服务之一,则无需在Ubuntu VPS上为SSH设置多因素身份验证,在这种情况下,您可以简单地要求我们的专业Linux管理员为SSH设置多因素身份验证。在Ubuntu上,适合您。 它们全天候提供24×7的服务,并会立即处理您的要求。

PS。 如果您喜欢这篇有关如何在Ubuntu上设置SSH多因素身份验证的文章,请使用左侧的按钮与社交网络上的朋友分享该文章,或在下面留下一个答复。 谢谢。

Sidebar