Linux系統中的SSH如何添加雙重認證
近來很多知名企業都出現了密碼泄露,業內對多重認證的呼聲也越來越高。在這種多重認證的系統中,用戶需要通過兩種不同的認證程序:提供他們知道的`信息(如 用戶名/密碼),再借助其他工具提供用戶所不知道的信息(如 用手機生成的一次性密碼)。這種組合方式常叫做雙因子認證或者兩階段驗證。
那麼我們要如何爲Linux系統中的SSH添加雙重認證,下面跟yjbys小編一起來看看吧!
爲了鼓勵廣泛採用雙因子認證的方式,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秒內有效,一旦過期,將重新生成一個新的驗證碼。
相關文章
-
Win10中如何安裝SUSE Linux子系統
Win10中怎麼安裝SUSE Linux子系統呢?希望下面的閱讀對你有所幫助,更多詳情請關注應屆畢業生考試網。在 Windows 10 中運行 openSUSE 和 SUSE Linux 企業版操作系統的方法。感興趣的網友可以直接在 Windows 10 開始菜單 -
Linux認證系統管理:認識與學習bash
一、認識bash這個shell1.管理整個計算機硬件的其實就是操作系統的內核,這個內核是需要被保護的,所以我們一般用戶就只能通過shell來跟內核通信,以讓內核達到我們所想打到的工作。2.只要能夠操作應用程序的接口度能夠 -
在Linux系統中如何清除squid的緩存
在運行Squid的linux或者Unix上清除代理緩存,這裏用的是很粗略的方法,還有用squidclient,好的方法就是腳本,尤其當網站很多,url參數有複雜的情況下。第一步:確定squid代理緩存的位置#grep cache_dir /etc/squid/ //直接抓取s -
如何用Linux操作系統批量建立用戶的shell
最近,筆者在校園網應用平臺建設中採用了Linux操作系統,爲校園網用戶提供DNS、Apache、POP3、SMTP、FTP等服務。由於我校學生用戶數在3000人以上,筆者在建設整個應用平臺的過程中特別重視保證用戶管理效率。我的基本思路 -
linux系統下如何使用assert函數
只要看得懂程序的人都知道assert,在Windows下使用VC編寫,使用assert之後,只需在IDE中設置爲debug版或者是release版,編譯器就會自動忽略掉assert。但是在Linux下,必須要在編譯命令中加入-DNDEBUG中,系統編譯時纔不會將asser -
Linux系統xlsatom命令如何使用
在Linux系統中有很多命令,理論上可以用Linux命令完成所有鼠標鍵盤的操作。xlsatoms命令可以用來定義搜索文件的範圍和成分,下面小編就給大家介紹一下Linux系統xlsatoms命令的.使用說明。一起去看看吧!功能說明:列出X Ser -
linux配置ssh公鑰認證簡介
Linux操作系統誕生於1991 年10 月5 日(這是第一次正式向外公佈時間)。Linux存在着許多不同的Linux版本,但它們都使用了Linux內核。下面是關於linux配置ssh公鑰認證簡介,希望大家認真閱讀! 一、生成和導入KEYA主機上 -
如何調整Linux系統中swap大小
使用free命令帶上m參數,查看swap文件大小,官方建議在RAM是2到4.5G時,swap是RAM的2倍;如果RAM大於等於4G則swap等於RAM即可也可用cat 查看etc目錄下的s文件,如下圖創建一個swap文件########dd if=/dev/zero of=/tmp/swap bs -
如何在Windows系統中使用Linux分區的資源
不同的課程對學員的要求各不相同。目前,Turbo Linux公司開設4門課程,由易到難順序爲:《Turbo Linux用戶基礎》、《Turbo Linux系統管理》、《Turbo Linux網絡管理》、《Turbo Linux集羣管理》。《Turbo Linux用戶基礎》 -
Linux認證系統管理:linuxmail命令發送郵件失敗
總結是在某一特定時間段對學習和工作生活或其完成情況,包括取得的成績、存在的問題及得到的經驗和教訓加以回顧和分析的書面材料,它可以提升我們發現問題的能力,讓我們抽出時間寫寫總結吧。總結你想好怎麼寫了嗎?以下是小