如何在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