首页 > 运维 > linux运维 > 如何在Linux中实现SSH的两因素身份验证(2FA)?

如何在Linux中实现SSH的两因素身份验证(2FA)?

James Robert Taylor
发布: 2025-03-17 17:31:28
原创
282 人浏览过

如何在Linux中实现SSH的两因素身份验证(2FA)?

在Linux系统上实施SSH的两因素身份验证(2FA),通过在授予访问权限之前需要两种形式的验证来增强安全性。这是使用Google Authenticator设置2FA的分步指南,这是为此目的最受欢迎的工具之一:

  1. 安装Google Authenticator
    首先,安装Google Authenticator PAM模块。在像Ubuntu这样的基于Debian的系统上,您可以通过运行来执行此操作:

     <code>sudo apt-get update sudo apt-get install libpam-google-authenticator</code>
    登录后复制

    在基于红帽的系统(例如CentOS)上,您可以使用:

     <code>sudo yum install google-authenticator</code>
    登录后复制
  2. 为您的用户配置Google Authenticator
    google-authenticator命令作为用户运行:将使用SSH:

     <code>google-authenticator</code>
    登录后复制

    此命令将生成一个秘密密钥和QR码。根据您的喜好回答提示,例如是否使用基于时间的令牌以及是否应每30秒更新密钥。

  3. 配置PAM以使用Google Authenticator
    通过打开file /etc/pam.d/sshd并在最后添加以下行:编辑SSH的PAM配置:

     <code>auth required pam_google_authenticator.so</code>
    登录后复制
  4. 修改SSHD配置
    OPEN /etc/ssh/sshd_config并确保配置以下设置:

     <code>ChallengeResponseAuthentication yes PasswordAuthentication no UsePAM yes</code>
    登录后复制

    然后重新启动SSH服务以应用更改:

     <code>sudo systemctl restart sshd</code>
    登录后复制
  5. 测试SSH登录
    尝试通过SSH登录。现在,除了密码外,还应提示您获取验证代码。

使用2FA在Linux系统上使用SSH有哪些安全好处?

在Linux系统上为SSH实施两因素身份验证提供了几种安全好处:

  • 增强的安全性:2FA增加了一层安全性,使攻击者更难获得未经授权的访问。即使密码被妥协,攻击者仍然需要第二个登录的因素。
  • 防止密码攻击:2FA减轻密码,蛮力攻击和密码猜测所带来的风险,因为访问不仅需要密码。
  • 问责制和监视:使用2FA,每个登录都可以与物理设备绑定,从而更容易跟踪和监视登录尝试并检测可疑活动。
  • 减少内部人士威胁:2FA可以通过确保员工的凭据被盗或滥用,可以限制内幕威胁的损害,第二个因素仍然是访问的障碍。
  • 遵守安全标准:许多监管框架和安全标准都需要使用2FA进行远程访问,因此实施它可以帮助组织满足合规性要求。

我可以使用哪些工具或软件在Linux上设置2FA?

有几种工具和软件选项可用于在Linux上为SSH设置2FA,包括:

  • Google Authenticator :Google Authenticator易于设置并使用基于时间的一次性密码(TOTP),在大多数Linux发行版中广泛使用和支持。
  • Authy :类似于Google Authenticator,但具有多设备同步和备份等其他功能。
  • Duo Security :一种全面的解决方案,可提供2FA以及高级功能,例如用于身份验证和与各种系统集成的推送通知。
  • Yubikey :一种基于硬件的2FA解决方案,使用U2F(通用第二因子),并且由于其物理性质非常安全。
  • Linux-PAM :Linux上的可插入身份验证模块(PAM)框架可以配置为使用包括Google Authenticator在内的各种2FA解决方案。
  • FreeOTP :Google Authenticator的开源替代方案,可在许多平台上使用。

在Linux服务器上配置SSH时,如何对常见问题进行故障排除?

在Linux服务器上为SSH配置2FA时,您可能会遇到几个常见问题。这是对它们进行故障排除的方法:

  1. 配置2FA后,SSH连接失败

    • 检查SSHD配置:确保将ChallengeResponseAuthentication设置为yes ,并将UsePAM设置为yes IN /etc/ssh/sshd_config
    • 验证PAM配置:确认auth required pam_google_authenticator.so将正确添加到/etc/pam.d/sshd中。
  2. 验证代码未接受

    • 时间同步:确保正确设置和同步系统时间。基于时间的一次性密码(TOTP)依赖于准确的计时。
    • 秘密密钥问题:验证google-authenticator生成的秘密键是否由PAM模块正确存储和使用。
  3. 身份验证提示未出现

    • 检查PAM配置顺序/etc/pam.d/sshd事项中的条目顺序。确保不会被后续条目覆盖Google Authenticator条目。
  4. 登录循环或悬挂

    • 调试SSHD :使用带有SSH的-d标志启用调试模式并捕获日志以了解登录过程失败的位置:

       <code>ssh -v user@host</code>
      登录后复制
    • 检查日志:检查系统日志是否有任何相关错误消息:

       <code>sudo journalctl -u sshd</code>
      登录后复制
  5. 硬件令牌问题

    • 设备驱动程序问题:如果使用Yubikey等硬件令牌,请确保系统安装和识别正确的驱动程序。

通过遵循这些故障排除步骤,您可以解决常见问题并确保2FA在Linux服务器上的SSH正常工作。

以上是如何在Linux中实现SSH的两因素身份验证(2FA)?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板