如何使用密码生成器进行远程登录身份验证?


55

我想通过添加另一个因素来加强对SSH登录名的身份验证:密码生成器设备或手机上的密码生成应用程序。默认设置中唯一明显的选项是固定的密码和密钥对。我怎样才能做到这一点?

(如果我使用密码加上密码生成器,则这将提供两因素身份验证(2FA):密码是“我所知道的”,密码是“我所拥有的”。)

Answers:


49

一种实现方法是使用Google提供的名为Google Authenticator的工具。

  1. 安装libpam-google-authenticator 安装libpam-google-authenticator

    • 要不就 sudo apt-get install libpam-google-authenticator
  2. 编辑/etc/pam.d/sshd以包含模块:

    • sudoedit /etc/pam.d/sshd
    • 然后在文件顶部添加此行并保存:

      auth required pam_google_authenticator.so
      
  3. 编辑您的SSH配置文件以打开挑战:

    • sudoedit /etc/ssh/sshd_config 然后从以下更改响应身份验证:

      ChallengeResponseAuthentication no 
      

      ChallengeResponseAuthentication yes
      

      然后保存文件。

  4. sudo restart ssh 重新启动SSH

  5. google-authenticator

    • 这将为您提供密钥,验证码和紧急刮刮码。它还会问您一些限速问题。

移动应用程序:

您需要其中之一才能在另一台设备上接收身份验证代码。

相关和有用的:

请注意,将密码与一次性密码结合使用是双重身份验证:将“您知道的信息”(密码)与“您拥有的信息”(密码生成器设备)结合在一起。另一方面,如果将一次性使用的密码与SSH密钥对结合使用,则全部都与“所拥有的”有关。当两个认证因子属于同一类型时,您将没有两因子认证。这有时被称为“一个半认证”。


12

Google Authenticator适用于您的个人服务器,但是您可能会发现它与现有的身份基础结构并不合适。如果要探索其他选项,请考虑使用RADIUS作为身份验证协议和pam-radius插件。所有面向企业的两因素身份验证系统都支持radius。我们已经编写了一篇文档,介绍如何通过pam-radiusWiKID两因素身份验证添加到Ubuntu

使用radius使您可以将除SSH之外的其他系统绑定到同一身份验证服务器。您也可以通过freeradius将身份验证请求路由到LDAP,然后再路由到2FA服务器,以将授权与身份验证分开。您可以使用AD btw进行相同的操作。


1

我敦促每个人都将以下行放在上面的顶部而不是底部/etc/pam.d/sshd如上所述)(现已更正):

auth required pam_google_authenticator.so

否则,您的系统将继续受到密码的蛮力攻击,从而危及两因素身份验证的第一部分:密码。

首先将要求您输入验证码,然后要求您输入密码(无论验证码是否正确)。如果任何一个错误,则需要再次输入两者。您可以用其他方法配置它,但是要在当前的默认ubuntu(15.04)sshd配置中进行描述要更改的难度要大一些。

有关为什么需要它的详细信息,请检查以下问题:

https://github.com/google/google-authenticator/issues/514

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.