SSH 本身是一种连接到远程机器的安全方式。 但是,如果您仍然热衷于为 SSH 连接增加额外的安全性,您可以添加双因素身份验证,以便在通过 SSH 连接时提示输入随机验证码。 我们之前向您解释过 如何在不同的社交网络上做到这一点 在这里,我们向您展示如何为 SSH 连接添加双因素身份验证。

注意:这些说明基于 Ubuntu 服务器。 如果您使用的是其他发行版,某些命令可能会有所不同。
安装 SSH 双因素身份验证
在要安装双因素身份验证的计算机上打开终端会话,键入以下内容:
sudo apt 安装 ssh libpam-google-authenticator

要完成安装,请运行:
谷歌-认证
提示:了解如何使用 SSH X 转发来运行远程应用程序。
配置双因素 SSH 身份验证
您将被问到一系列问题。 在大多数情况下,您可以写“y”(是)作为答案。 任何时候设置错误,请按 Ctrl + C,然后再次键入 Google-Authenticator 以重置设置。
- 该程序询问您是否希望身份验证代码与时间相关。 为此,请按 Y 然后 输入。
在这个问题之后,你应该看到你的密钥和紧急代码。 记录并保存详细信息。 稍后您将需要密钥来设置 Google 身份验证器应用程序。 - 该程序会询问您是否需要 更新“/home/username/.google_authenticator”文件。 اضغطعلى Y 然后 输入.
- 当系统询问您是否要禁止多次使用同一身份验证令牌时,这将限制您每次只能登录一次。 30ثانية. 如果您想确保任何时候只有一个活动连接可以使用身份验证令牌,这将很有用。
- 默认情况下,身份验证令牌仅在 30 秒内有效。 为了补偿客户端和服务器之间可能存在的时间偏差,将窗口从其默认大小 1-1/2 分钟增加到大约 4。这在本地计算机时钟或远程服务器未正确同步的情况下很有用。
- 为身份验证模块启用速率限制。 此选项将攻击者限制为不超过 每 3 秒进行 30 次登录尝试。
配置 SSH 以使用 Google 身份验证器
- افتحملف “/etc/pam.d/sshd”:
须藤纳米/etc/pam.d/sshd
- 将此行添加到文件的顶部:
身份验证需要 pam_google_authenticator.so
- 点击 Ctrl + O 和 Ctrl + X 保存并退出文件。
- 打开 文件“/etc/ssh/sshd_config”:
须藤纳米/ etc / ssh / sshd_config
- 向下滚动到文件底部并键入以下行:
ChallengeResponseAuthentication 是
- 保存并退出文件。
- أعدتشغيل ssh 服务器:
须藤 systemctl 重启 ssh

在 Google 身份验证器中设置密钥
- 打开 谷歌身份验证器应用 (或其替代方案之一)在您的智能手机上(或 سطحالمكتب). 点击应用程序左下角的加号图标,然后选择 输入设置密钥。
- 输入身份验证应用程序的名称。
- 输入您之前创建的密钥,然后按 “添加”。

当您通过 SSH 连接到远程计算机时,您将看到一个验证密钥请求。

注意:双因素身份验证仅适用于基于密码的登录。 如果您已经在使用 SSH 会话的公钥/私钥 ,它将绕过双因素身份验证并直接登录。 另请查看更多保护 SSH 服务器的方法。
经常问的问题
Q1。 我正在使用 Yubikey。 我还能在 SSH 中使用双因素身份验证吗?
回答。 不。 Google 身份验证器仅适用于标准 SSH 密码登录。 类似于设置公共 SSH 密钥,此特定模块不能与其他第三方双因素解决方案一起使用,例如 Yubikey。
Q2。 是否可以在不同的手机上使用相同的授权密钥?
回答。 是的。 只要您有您的密钥或二维码,您就可以轻松地使用带有谷歌身份验证器的不同手机。 但是,在将其导入新设备之前,您需要确保已从之前的设备中完全删除您的授权密钥,因为任何可以访问之前设备的不良行为者都能够绕过您的二进制挑战。
Q3。 您可以通过 SSH 使用不同的双因素身份验证应用程序吗?
回答。 是的。 虽然 libpam 模块的开发人员专门将其设计为与 Google Authenticator 一起使用,但您仍然可以将其与其他身份验证应用程序一起使用,因为二进制密钥格式在不同的应用程序中通常是相同的。
