簡單來講,就是用Google的身份驗證器上驗證碼登錄SSH(基於時間,驗證必須保證手機和服務器上時間一致)git
本人的實驗環境爲CentOS7,其餘Linux發行版本均可以,大同小異github
環境準備(配置阿里雲的YUM源)bootstrap
[root@mybolg ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@mybolg ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@mybolg ~]# yum makecache
安裝GitHub上Google開源項目 google-authenticator-libpam
服務器
## 安裝依賴包 [root@mybolg ~]# yum install git make automake gcc libtool pam-devel -y ## 建立並進入目錄 [root@mybolg ~]# mkdir -p /soft/code && cd /soft/code ## 下載 google-authenticator-libpam 項目 [root@mybolg code]# git clone https://github.com/google/google-authenticator-libpam.git ## 進入目錄 [root@mybolg code]# cd google-authenticator-libpam/ ## 運行腳本生成 configure 配置文件 [root@mybolg google-authenticator-libpam]# ./bootstrap.sh ## 安裝 google-authenticator-libpam [root@mybolg google-authenticator-libpam]# ./configure && make && make install
配置項目ssh
## 創建軟連接 [root@mybolg ~]# ln -s /usr/local/lib/security/pam_google_authenticator.so /lib64/security/pam_google_authenticator.so ## SSH上打開質疑-應答模式 [root@mybolg ~]# sed -i 's#ChallengeResponseAuthentication no#ChallengeResponseAuthentication yes#g' /etc/ssh/sshd_config ## PAM指定SSH爲 pam_google_authenticator 驗證登錄 [root@mybolg ~]# sed -i '1s#^#auth sufficient pam_google_authenticator.so\n#' /etc/pam.d/sshd ## 重啓sshd服務 [root@mybolg ~]# systemctl restart sshd
手機下載身份驗證器(百度搜索)curl
生成二維碼
在服務器上輸入 google-authenticator
會問你是否生成驗證信息,選y就會生成二維碼(以下圖)google
用身份驗證器上的掃描條形碼來掃描二維碼(部分安卓不支持掃描,能夠用二維碼下面的祕鑰,帳號隨便)
阿里雲
完成驗證
ssh登錄先輸入驗證碼 在輸入密碼url