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

2021-07-10 10:30:19 字數 4126 閱讀 1802

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

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

通過配置ssh深刻理解puppet的語法及工作機制

ubuntu下ssh安裝或設定

suse啟用ssh和ftp

使用ssh客戶端登陸linux之後出現亂碼的解決方案

詳解linux中ssh遠端訪問控制

linux 上ssh 服務的配置和管理

在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上:

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

最後,將 google authenticator 安裝到合適位置

$ sudo make install

排錯當編譯 google authenticator 時出現如下錯誤:

fatal error

:security/.

h:nosuch file

ordirectory

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

在 debian、 ubuntu 或 linux mint 上:

$ sudo apt

-get

install libpam0g

-dev

在 centos、 fedora 或 rhel 上:

$ sudo yum install pam

-devel

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

生成驗證金鑰

在linux主機上執行google認證器

$ google

-authenticator

你將看到乙個qr碼,它使用如下圖形表示我們數字形態的金鑰。一會我們要用到它在安卓裝置上完成配置。

google認證器會問一些問題,如果你不確定,就回答"yes"。這個應急備用驗證碼(圖中 emergency scratch codes)可以在你由於丟失了繫結的安卓裝置的情況下(所以不能得到生成的一次性密碼)恢復訪問。最好將應急備用驗證碼妥善儲存。

在安卓裝置上執行google認證器

無論採用上述兩種選項的任何方式,一旦成功,你將看到註冊成功提示和一次性密碼,如下圖所示:

為ssh伺服器用google認證器

最終我們需要修改兩個檔案來完成整合google認證器和openssh服務這臨門一腳。

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

$ sudo vi

/etc

/pam.d

/sshd

auth required pam_google_authenticator.so

然後開啟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秒內有效,一旦過期,將重新生成乙個新的驗證碼。

現在和往常一樣,使用ssh登入終端

$ ssh user@ssh_server

當提示你輸入驗證碼的時候,輸入我們剛獲得的驗證碼。驗證成功後,再輸入ssh的登入密碼。

雙因子認證通過在使用者密碼前新增一層來有效的保護我們脆弱的使用者密碼。你可以使用google認證器來保護我們其他的密碼,如google賬戶, wordpress.com, dropbox.com, outlook.com等等。是否使用這項技術,取決於我們自己,但採用雙因子認證已經是行業的大趨勢了。

Linux 中如何更改SSH埠

預設情況下,ssh 偵聽埠 22 更改預設 ssh 埠可以降低被自動攻擊的風險,從而為伺服器增加額外的安全層。和更改預設埠相比,將防火牆配置為僅允許從特定主機訪問埠 22 則更加簡單和安全。本教程介紹如何更改 linux 中的預設 ssh 埠。我們還將向您展示如何配置防火牆以允許訪問新的 ssh 埠...

如何為linux釋放快取

原文 在linux系統下,我們一般不需要去釋放記憶體,因為系統已經將記憶體管理的很好。但是凡事也有例外,有的時候記憶體會被快取占用掉,導致系統使用swap空間影響效能,此時就需要執行釋放記憶體 清理快取 的操作了。linux系統的快取機制是相當先進的,他會針對dentry 用於vfs,加速檔案路徑名...

如何為Linux安裝Go語言

ubuntu debian或linux mint安裝go語言 基於 debian的 linux 發行版本都可以使用 apt get 命令來進行安裝 sudo apt get install golang要檢視當前系統安裝的 go 語言版本可以使用如下命令 go version由於 go 必需儲存在 ...