视窗
loading...
  虚拟主机域名注册-常见问题服务器知识 → 操作系统

Ubuntu服务器设置SSH双重因素认证(2FA)的操作方法

  通常,您只需要输入密码或使用SSH密钥即可远程登录Ubuntu服务器。两因素身份验证(2FA)要求您输入两条验证信息才能登录。因此,您还需要输入基于时间的一次性密码才能登录SSH服务器。使用IETF标准的TOTP算法计算一次密码。如今,许多网站和服务为用户提供2FA保护其帐户的安全,最好在SSH服务器上启用2FA。

  本教程将向您展示如何设置

  ①使用一次性密码进行密码认证

  ②使用一次性密码的公钥认证

  注意:本文中将使用的开源服务器软件称为libpam-google-authenticator,它是从默认Ubuntu存储库安装的。Google不以任何形式参与任何身份验证过程。服务器软件和移动应用程序不需要网络访问。

  1、在Ubuntu服务器上安装和配置Google Authenticator

  登录您的Ubuntu服务器并运行以下命令,以从默认Ubuntu软件包存储库安装Google Authenticator。

  sudo apt install libpam-google-authenticator

  然后运行google-authenticator命令在您的主目录中创建一个新的密钥。

  google-authenticator

  当被问到“您是否希望身份验证令牌基于时间?” 回答y。

  然后,您将看到可以使用手机上的应用程序扫描的QR二维码。我推荐两个应用程序:

  Google Authenticator是最著名的TOTP移动应用。您可以通过手机上的Google Play或Apple应用商店安装它。

  在谷歌身份验证器移动应用程序是不是开源。如果您不信任Google,则可以使用FreeOTP,这是Red Hat开发的开源TOTP移动应用程序。

  使用手机上的Google Authenticator或FreeOTP扫描QR码。请注意,您需要放大终端窗口以扫描完整的QR码。

  QR码代表密钥,只有您的SSH服务器和TOTP移动应用知道该密钥。扫描QR码后,您将在手机上看到一个六位数的一次性密码。默认情况下,它每30秒更改一次。您稍后需要输入此一次性密码,以便通过SSH登录Ubuntu服务器。

  在终端窗口中,您可以看到密钥,验证码和紧急暂存码。建议您将此信息保存到安全的地方以备后用。

  然后,您可以输入y回答所有剩余的问题。这将更新您的Google Authenticator配置文件,禁用同一身份验证令牌的多次使用,增加时间范围并启用速率限制以防止强行登录尝试。

  2、将SSH守护程序配置为使用Google Authenticator

  打开SSH服务器配置文件。

  sudo nano /etc/ssh/sshd_config

  在文件中找到以下两个参数,并确保将它们都设置为yes。

  UsePAM yes

  ChallengeResponseAuthentication yes

  PAM代表可插入身份验证模块。它提供了一种简便的方法,可以将不同的身份验证方法插入Linux系统。要通过SSH启用Google Authenticator,必须启用PAM和质询响应身份验证。保存并关闭文件。然后重新启动SSH守护程序,以使更改生效。

  sudo systemctl restart ssh

  注意:要允许root用户使用2FA,必须先允许root用户通过SSH登录,配置为PermitRootLogin yes。不能是 PermitRootLogin no 或 PermitRootLogin prohibit-password。

  默认情况下,质询-响应身份验证要求您输入用户密码才能登录。现在,为SSH守护程序编辑PAM规则文件。

  sudo nano /etc/pam.d/sshd

  在此文件的开头,您可以看到以下行,当ChallengeResponseAuthentication设置为时,它将启用密码验证yes。

  @include common-auth

  要同时启用一次性密码身份验证,请添加以下两行。

  #One-time password authentication via Google Authenticator

  auth required pam_google_authenticator.so

  保存并关闭文件。从现在开始,SSH守护程序将要求您输入用户密码和验证码(由Google Authenticator生成的一次性密码)。

  3、如何启用公钥身份验证和一次性密码身份验证

  对于SSH安全性,建议您使用公钥身份验证而不是密码身份验证。

  一旦设置了公共密钥身份验证并按照上述两个步骤进行操作,就可以将公共密钥身份验证与一次性密码身份验证结合使用。

  编辑SSH守护程序配置文件。

  sudo nano /etc/ssh/sshd_config

  在上一步中,我们启用了质询响应认证,现在我们想让SSH守护进程知道用户必须同时通过公钥认证和质询响应认证。在此文件的末尾添加以下行。

  AuthenticationMethods publickey,keyboard-interactive

  保存并关闭文件。重新启动SSH守护程序,以使更改生效。

  sudo systemctl restart ssh

  我们还需要编辑SSH PAM配置文件。

  sudo nano /etc/pam.d/sshd

  注释掉以下行(在开头添加#)以禁用用户密码身份验证。

  @include common-auth

  保存并关闭文件。从现在开始,您需要使用SSH密钥和Google Authenticator验证码登录。

  笔记

  Ubuntu服务器上的每个用户都需要运行google-authenticator命令并扫描QR码,才能使用两因素身份验证。如果用户未设置并尝试登录,则将显示错误消息“ 权限被拒绝(键盘交互) ”。

  紧急暂存代码是您的备用代码。如果您丢失了手机,则可以输入五个紧急暂存代码而不是一次性密码来完成两步验证。这些代码仅供一次性使用。

  如果要更改密钥,只需登录服务器并google-authenticator再次运行命令以更新~/.google_authenticator文件。

  由于一次性密码是使用共享密钥和当前时间计算的,因此最好在Ubuntu服务器上启用NTP时间同步以保持准确的时间,尽管以前我们允许Ubuntu之间的时间偏差为4分钟服务器和移动应用。您的Ubuntu服务器和TOTP移动应用可以使用不同的时区。

  4、如何禁用SSH两因素身份验证

  编辑SSH守护程序配置文件。

  sudo nano /etc/ssh/sshd_config

  查找以下行。

  AuthenticationMethods publickey,keyboard-interactive

  删除键盘交互式身份验证方法。

  AuthenticationMethods publickey

  保存并关闭文件。然后重新启动SSH守护程序。

  sudo systemctl restart ssh




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:搭建手游客户端选择香港服务器有哪些优势
下一篇:美国BGP线路机房性能及服务有什么优势
  >> 相关文章
没有相关文章。
0

在线
客服

在线客服服务时间:9:00-18:00

客服
热线

19899115815
7*24小时客服服务热线

关注
微信

关注官方微信