# 【Blog.29.教程.技术】为你的Linux启用2FA验证

类翻译/搬运 作品

本文大部分内容参考并翻译了来自 LinuxBabe - Xiao GuoanLinuxBabe - How to Set Up SSH Two Factor Authentication on Ubuntu 18.04, 18.10 Server

因此属于 类翻译/搬运 作品,作者的原文信息将会置顶此处

如果有版权纠纷,请前往此处获取邮件地址联系我

# 2FA

2FA 的全称是 Multi-factor authentication,译作 多因素验证

也就是用户需要使用两种以上的验证方式来证明你是你

例如假设你需要访问一个资源,你除了需要输入账号和密码,你还需要另外提供你的指纹

你的指纹就是第三种认证方式,证明你就是你

# 环境介绍

这次使用的环境为

  • Ubuntu 18.04.2 LTS

  • 使用用户密钥登录&禁用密码登录

# 给Linux设置一个2FA

# Google Authenticator 设置

给Linux多加一个2FA,无疑是为了安全

为了启用2FA,我们需要安装一个Google Authenticator (libpam-google-authenticator)

Ubuntu/Debian 用户使用APT安装: sudo apt install libpam-google-authenticator

接下来通过命令 google-authenticator 建立一个密钥

接下来按y回车即可

你会看到一个二维码,如果你的终端字体设置太大可能无法显示二维码的其他细节,需要手动调节一下字体大小即可

请使用2FA App来进行二维码扫描,我目前使用的是iOS平台的Step Two

就像这样

下面出现的所有问题建议全部都疯狂按y回车

# 配置到SSH

接下来我们需要将它配置到SSH

使用编辑器,例如VIM或者nano来编辑/etc/ssh/sshd_config文件

记住非root用户要使用sudo权限来执行

sshd_config文件中找到:

  • ChallengeResponseAuthentication

  • UsePAM

这两个地方

然后改成yes

接下来运行命令来重新启动ssh

sudo systemctl restart ssh

接下来再去编辑另一个文件: /etc/pam.d/sshd

加上这行 auth required pam_google_authenticator.so

保存,重启ssh

重新登陆时应该会看到除了用户名和密码,还需要刚才的2FA验证

# 针对于使用密钥登录的用户

如果你是使用密钥登录,还需要做一些编辑

前往编辑 /etc/ssh/sshd_config

加上 AuthenticationMethods publickey,keyboard-interactive

接下来重启ssh

sudo systemctl restart ssh

然后再编辑 /etc/pam.d/sshd 这个文件

通过 # 注释掉 @include common-auth

# 需要重新配置验证码?

如果需要重新配置验证码,再次执行google-authenticator命令即可,将新的二维码扫描进入2FA验证程序后就好了

# 取消掉2FA验证

如果需要取消掉2FA验证,请按照上面步骤反着来

可以注释掉教程中编辑的东西,重启ssh服务

# 参考