本文介在CentOS/RHEL 8/RHEL 7操作系统上为SSH设置双因素身份验证的方法,我们将使用适用于Android(在Play商店中)和iOS(在iTunes中)的Google身份验证器应用生成身份验证代码。基本条件是:服务器运行CentOS/RHEL 8/RHEL 7、一部运行Android或iOS的手机、Google身份验证器应用、已配置的SSH连接、可以设置双因素身份验证。
一、安装EPEL存储库参考文章 你需要安装并运行EPEL存储库,以便可以安装依赖项,请参考在RHEL 8/CentOS 8上安装EPEL存储库(EPEL Repository)的方法一文。
二、安装并配置所需的包 我们需要从EPEL存储库安装Google Authenticator PAM模块,首先,确认包是否可用: $ sudo yum search google-authenticator Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 0:01:53 ago on Sat 29 Dec 2018 10:09:22 AM EAT. =================== Name Matched: oogle-authenticator =================== google-authenticator.x86_64 : One-time pass-code support using open standards 确认后,使用dnf或yum软件包管理器继续使用qrencode安装它: sudo dnf -y install google-authenticator qrencode Google Authenticator程序包包含一个可插入的身份验证模块(PAM),允许使用符合开放式身份验证计划(OATH)(与OAuth无关)开发的开放标准的一次性密码登录。 有关已安装软件包的更多详细信息,请运行rpm -qi google-authenticator命令查看:
三、配置SSH服务器 安装后,你需要使用SSH身份验证器PAM模块,为此,请打开文件/etc/pam.d/sshd并在末尾添加以下行: $ sudo vi /etc/pam.d/sshd 添加以下行到最后: auth required pam_google_authenticator.so 然后修改/etc/ssh/sshd_config: $ sudo vi /etc/ssh/sshd_config ChallengeResponseAuthentication yes 将ChallengeResponseAuthentication从no更改为yes以启用challenge-response密码。
四、配置身份验证 使用Google身份验证器,配置双因素身份验证,需要为每个用户帐户执行此操作才能登录。 在终端中,运行google-authenticator命令: $ google-authenticator 这会问你一系列问题,这是一个推荐的配置,如下: Use “time-based” time-based tokens: yes Update the .google_authenticator file: yes Disallow multiple uses of the same authentication token: yes Increase the original generation time limit: no Enable rate-limiting: yes 如果你无法访问手机,请将获得密钥、验证码和紧急代码写在纸上或记事本上并保证它们的安全: Your new secret key is: DKM6MJWQVGZHLTWJ4G45XXXXXX Your verification code is 869XXX Your emergency scratch codes are: 2746XXXX 2665XXXX 3671XXXX 2271XXXX 8000XXXX 下面安装和配置Google身份验证器。 Google身份验证器应用适用于Android(在Play商店中)和iOS(在iTunes中)以生成身份验证代码,下载并安装它:
按照提示完成设置,然后选择扫描条形码或输入私钥:
在安装过程中扫描屏幕上打印的条形码或添加密钥以添加SSH帐户:
应该会看到帐户已添加到Google身份验证器,如下图所示:
接下来,测试SSH双因素身份验证。 尝试启动到服务器的新SSH: $ ssh rhel8 Password: <Enter SSH Password> Verification code: <Enter Verificarion code on Google Authenticator> Activate the web console with: systemctl enable --now cockpit.socket Last failed login: Sat Dec 29 11:51:46 EAT 2018 from 192.168.122.1 on ssh:notty Last login: Sat Dec 29 11:48:31 2018 [jmutai@rhel8 ~]$ 至此,你的SSH双因素身份验证已在RHEL/CentOS 8操作系统上成功配置。
相关主题 |