Linux系統中的SSH如何新增雙重認證

才智咖 人氣:2.69W

近來很多知名企業都出現了密碼洩露,業內對多重認證的呼聲也越來越高。在這種多重認證的系統中,使用者需要通過兩種不同的認證程式:提供他們知道的資訊(如 使用者名稱/密碼),再借助其他工具提供使用者所不知道的資訊(如 用手機生成的一次性密碼)。這種組合方式常叫做雙因子認證或者兩階段驗證。

那麼我們要如何為Linux系統中的SSH新增雙重認證,下面跟本站小編一起來看看吧!

為了鼓勵廣泛採用雙因子認證的方式,Google公司釋出了Google Authenticator,一款開源的,可基於開放規則(如 HMAP/基於時間)生成一次性密碼的軟體。這是一款跨平臺軟體,可執行在Linux, Android, iOS。Google公司同時也支援外掛式鑑別模組PAM(pluggable authentication module),使其能和其他也適用PAM進行驗證的工具(如OpenSSH)協同工作。

在本教程中,我們將敘述整合OpenSSH和Google提供的認證器實現如何為SSH服務設定雙因子認證。我將使用一款Android裝置來生成一次性密碼,本教程中需要兩樣武器:(1)一臺執行著OpenSSH服務的Linux終端,(2)一臺安卓裝置。

在Linux系統中安裝Google Authenticator第一步需要在執行著OpenSSH服務的Linux主機上安裝Google認證器。按照如下步驟安裝Google認證器及其PAM模組。

用安裝包安裝 Google Authenticator如果你不想自己構建 Google Authenticator,在幾個 Linux 發行版上有已經編譯好的安裝包。安裝包裡面包含 Google Authenticator 二進位制程式和 PAM 模組。

在 Ubuntu 上安裝 Google Authenticator:

$ sudo apt-get install libpam-google-authenticator

在 Fedora 上安裝 Google Authenticator:

$ sudo yum install google-authenticator

在 CentOS 上安裝 Google Authenticator ,需要首先啟用 EPEL 軟體庫,然後執行如下命令:

$ sudo yum install google-authenticator

如果不想使用已經編譯好的安裝包,或者你的 Linux 發行版不在此列,可以自行編譯:

在 Linux 上 Google Authenticator首先,安裝構建 Google Authenticator 所需的.軟體包。

在 Debian、 Ubuntu 或 Linux Mint 上:

$ sudo apt-get install wget make gcc libpam0g-dev

在 CentOS、 Fedora 或 RHEL上:

$ sudo yum install wget make gcc pam-devel

然後下載 Google Authenticator 的原始碼,並按如下命令編譯。

$ wget

$ tar xvfvj 2

$ cd libpam-google-authenticator-1.0

$ make

如果構建成功,你會在目錄中看到 和 google-authenticator 兩個檔案。

最後,將 Google Authenticator 安裝到合適位置

$ sudo make install

排錯當編譯 Google Authenticator 時出現如下錯誤:

fatal error: security/pam_appl.h: No such file or directory

要修復這個問題,請安裝如下依賴包。

在 Debian、 Ubuntu 或 Linux Mint 上:

$ sudo apt-get install libpam0g-dev

在 CentOS、 Fedora 或 RHEL 上:

$ sudo yum install pam-devel

當Google認證器安裝好後,你需要在Linux主機上建立驗證金鑰,並且在安卓裝置上註冊,注意這項配置操作是一次性的。我們將詳細敘述如何完成這些操作:

生成驗證金鑰在Linux主機上執行Google認證器

$ google-authenticator

為SSH伺服器用Google認證器最終我們需要修改兩個檔案來完成整合Google認證器和OpenSSH服務這臨門一腳。

首先,修改PAM配置檔案,命令和需新增的內容如下:

$ sudo vi /etc/pam.d/sshd

auth required pam_google_

然後開啟SSH配置檔案,找到引數ChallengeResponseAuthentication,並啟用它。

$ sudo vi /etc/ssh/sshd_config

ChallengeResponseAuthentication yes

最後,重啟SSH服務。
 

在 Ubuntu、 Debian 和 Linux Mint 上:

$ sudo service ssh restart

在Fedora (或 CentOS/RHEL 7)上:

$ sudo systemctl restart sshd

在CentOS 6.x或 RHEL 6.x上:

$ sudo service sshd restart

驗證雙因子認證在繫結的安卓裝置上執行Google認證器,獲得一個一次性驗證碼,該驗證碼30秒內有效,一旦過期,將重新生成一個新的驗證碼。

TAGS:系統 SSH Linux