在ubuntu14.04 LTS上用Google Authenticator保护ssh
google authenticator是一个实现基于时间的一次性密码(TOTP)安全令牌的安全应用程序。通常也被称为“两个步骤”。
安装了Google Authenticator的服务器需要用户名、密码和密钥(由googleauthenticator应用程序生成)才能通过ssh访问该服务器。
我们将在ubuntu14.04lts服务器上使用googleauthenticator保护ssh。
- 安装Google authenticator包。
- 配置PAM sshd配置文件。
- 配置ssh服务器。
- 创建系统用户并设置密码。
- 为新创建的用户生成二维码、密钥和验证码。
- 谷歌认证程序在你的移动,桌面(Linux或者Ubuntu)应用程序的参考。
- 使用用户名通过ssh访问服务器
1. 安装Google authenticator包
登录Ubuntu服务器并安装googleauthenticator包。
sudo apt-get update sudo apt-get install libpam-google-authenticator
2. 配置PAM sshd配置文件
我们将编辑PAM的sshd配置文件。我们将首先备份此文件。
sudo cp -pvf /etc/pam.d/sshd ~/sshd.original.pam.`date +%F`
现在编辑pamsshd文件并在其中配置googleauthenticator模块。
vi /etc/pam.d/sshd ## Add the below given line in top of /etc/pam.d/sshd file auth required pam_google_authenticator.so
参考:
ubuntu@ip-172-31-62-100:~$ egrep -v '^#|^$' /etc/pam.d/sshd @include common-auth auth required pam_google_authenticator.so account required pam_nologin.so @include common-account session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close session required pam_loginuid.so session optional pam_keyinit.so force revoke @include common-session session optional pam_motd.so motd=/run/motd.dynamic noupdate session optional pam_motd.so # [1] session optional pam_mail.so standard noenv # [1] session required pam_limits.so session required pam_env.so # [1] session required pam_env.so user_readenv=1 envfile=/etc/default/locale session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open @include common-password ubuntu@ip-172-31-62-100:~$
3. 配置ssh服务器
现在我们正在配置ssh服务器并编辑sshd_config文件。这也是一个重要的步骤,以便它可以与我们在PAM中设置的googleauthenticator模块一起工作。
像往常一样,备份sshd_config文件。
sudo cp -pv /etc/ssh/sshd_config sshd_config.orig.`date +%F`
现在要让它与google authenticator一起工作,编辑sshd_config文件并按照下面的部分设置参数
sudo vi /etc/ssh/sshd_config # edit the below given parmaters ChallengeResponseAuthentication yes PasswordAuthentication yes UsePAM yes
保存sshd_配置文件后。重新启动ssh服务器
sudo service ssh restart
3. 创建系统用户并设置密码
现在我们将创建一个用户并在服务器中设置其密码。然后我们将生成该用户用于登录服务器的二维码和密钥。
例如,我们正在创建一个名为Hyman的用户并设置其密码。
sudo useradd -m -d /home/Hyman Hyman sudo passwd Hyman
5. 为新创建的用户生成二维码、密钥和验证码
正如我们在上面的第4步中看到的,我们创建了一个名为Hyman的用户。现在我们将生成二维码及其密钥。
生成二维码和密钥是一种非常简单的方法。
用户使用su命令登录服务器。(注意:我们仍在服务器中)
sudo su -l Hyman
现在我们将从用户的shell中使用下面给定的命令生成代码和密钥。
google-authenticator
它将生成二维码和密钥。
6. 谷歌认证程序在你的移动,桌面(Linux或者Ubuntu)应用程序的参考
为了生成验证码,我们必须在我们的手机或者系统中安装谷歌认证程序。
有了这个Google验证器应用程序验证码将生成。
我们将讨论如何在你的系统上使用googleauthenticator应用程序在新的即将发布的帖子中提供更多细节。
7. 使用用户名通过ssh访问服务器
现在使用我们创建并生成二维码和密钥的用户访问服务器。
它将要求我们在服务器中设置的密码和我们将从Google authenticator应用程序生成的验证码。
参考以下系统:
Hyman@linuxworld:~$ ssh [email protected] Password: Verification code: Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-44-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Sun Mar 1 15:25:29 UTC 2015 System load: 0.0 Processes: 109 Usage of /: 10.2% of 7.74GB Users logged in: 1 Memory usage: 7% IP address for eth0: 172.31.62.251 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud Last login: Sun Mar 1 15:25:29 2015 from 49.205.123.226 $ $ $ Connection to ec2-52-1-130-111.compute-1.amazonaws.com closed. Hyman@linuxworld:~$