简单来说,就是用Google的身份验证器上验证码登陆SSH(基于时间,验证必须保证手机和服务器上时间一致)
本人的实验环境为CentOS7,其他Linux发行版本都可以,大同小异
环境准备(配置阿里云的YUM源)
[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
配置项目
## 建立软链接
[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
手机下载身份验证器(百度搜索)
生成二维码
在服务器上输入 google-authenticator
会问你是否生成验证信息,选y就会生成二维码(如下图)
用身份验证器上的扫描条形码来扫描二维码(部分安卓不支持扫描,可以用二维码下面的秘钥,账号随便)
完成验证
ssh登陆先输入验证码 在输入密码