简单来讲,就是用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