安全外壳(SSH)是一种广泛用于从一台计算机到另一台计算机的安全远程登录的协议,它提供了强大的加密功能以防止未经授权的访问。
然而,随着网络威胁的日益复杂,仅仅依靠传统的基于密码的身份验证可能会使系统容易受到暴力攻击和密码盗窃。这就是双因素身份验证(2FA)发挥作用的地方。
它不仅需要密码(你知道的东西),还需要第二个因素,通常是你拥有的东西(比如移动设备)或你身上的东西(就像指纹),从而增加了额外的安全层。
将2FA与SSH集成可显著降低未经授权访问您的系统的风险,即使密码被泄露也是如此。那么,让我们向您展示如何做到这一点。
步骤1:在手机上安装2FA Authenticator应用程序
首先,您必须在移动设备上安装2FA验证器应用程序,才能使用SSH进行双因素身份验证。此应用程序生成时间敏感的一次性使用代码,这些代码是身份验证过程中的第二个因素。
此类应用程序的流行选择包括Google Authenticator或Microsoft Authenticator。它们适用于Android和iOS设备,可以从各自的应用商店下载。
- Android版谷歌验证器
- iOS版谷歌验证器
- 适用于Android的Microsoft Authenticator
- 适用于iOS的Microsoft Authenticator
对于本指南,我们将使用Google Authenticator应用程序。将其预装在您的移动设备上很重要,因为在第3步中,我们将在与SSH服务器的2FA初始设置过程中使用它。
步骤2:安装Google的PAM验证器模块
Google Authenticator是一种基于软件的身份验证工具,使用基于时间的一次性密码(TOTP)算法和基于HMAC的一次性密码算法实现双因素身份验证(2FA)服务,用于验证软件应用程序的用户。
要使您的Linux系统为此做好准备,您必须安装名为“
libpam谷歌验证器
或
谷歌验证器
,”取决于您的分销。但是这个包裹有什么功能?
简而言之,它为Linux提供了一个软件模块,将Google Authenticator集成到可插拔身份验证模块(PAM)系统中。PAM是一个框架,用于将多个低级身份验证方案集成到高级API中,允许在需要用户验证的程序中实现各种身份验证方法。
Ubuntu/Debian
Ubuntu、Debian和其他基于它们的发行版,如Linux Mint或Pop_操作系统,可以使用下面的apt命令安装Google Authenticator:
sudo apt安装libpam谷歌验证器
Rocky Linux/AlmaLinux
对于Rocky和Alma等企业Linux发行版,Google Authenticator可通过EPEL存储库获得。因此,您必须首先将其添加到您的系统中(如果您还没有),然后安装Google Authenticator本身。
sudodnf安装epel版本
sudodnf安装谷歌验证器
Fedora
Fedora用户可以在官方分发库中找到Google Authenticator。要安装它,请执行以下命令:
sudodnf安装谷歌验证器
Arch Linux
Google Authenticator可在发行版针对Arch和基于Arch的衍生品的回购中使用。要安装它,请运行:
sudo pacman-S libpam谷歌验证器
步骤3:配置Google Authenticator
成功安装Google Authenticator后,我们现在准备对其进行配置。要进行配置,请打开终端并执行以下命令。
谷歌验证器
从现在开始,您将需要回答几个问题,第一个问题是:“
您希望身份验证令牌是基于时间的吗?
答复
y
“以启用基于时间的一次性密码(TOTP)。
您的终端屏幕上将显示一个二维码。这就是移动设备上的Google Authenticator应用程序发挥作用的地方。打开它,然后单击右下角的“+”图标。
您将遇到两种选择:“
扫描二维码
和
输入设置密钥
。“鉴于终端中显示的二维码可能太大,难以直接从您的设备上扫描,我们将选择”
输入设置密钥
选项继续并点击它。
在“
账户
字段中,输入您选择的名称,例如
my2fa
。“然后,在”
钥匙
“在移动设备的Google Authenticator应用程序的字段中,键入来自的代码”
你的新密钥是
”线路。最后,点击“
添加
按钮
作为回应,该应用程序将生成一个6位数的代码。
在终端中输入此代码,然后点击“
进来
.”
您应该收到一个“
代码已确认
消息此外,我们建议您写下五个紧急代码,并将其保存在安全的地方。
这些代码是一次性的
并授予您SSH访问权限,例如,当您没有方便的移动设备来生成代码时。回复为“
y
“当被要求更新时”
.google_authenticator
文件
关于下一个问题,为了提高安全性,再次回答“
y
,”确认要禁用同一代码的多次使用。
Google Authenticator的以下配置选项涉及到,如果您无法适应30秒的时间范围,则可能会使用以前生成的代码,这是每个令牌从生成之时起的有效期。
但是,由于此选项会降低安全性,我们强烈建议您回复“
n
.”
最后,回答“
y
“以激活速率限制,允许在30秒内尝试最多三次登录,从而最大限度地减少SSH服务器上成功进行暴力攻击的机会。
我们已经完成了Google Authenticator的设置,所以现在是时候继续配置SSH服务器本身以允许双因素身份验证了。
步骤4:将SSH配置为使用双因素身份验证
打开SSH服务器配置文件,使用首选的终端文本编辑器进行编辑:
sudo-vim/etc/ssh/sshd_config
这里要做的是添加/更改以下两个配置值:
KbdInteractiveAuthentication是
ChallengeResponseAuthentication是
如果在文件中找到这两个设置中的任何一个,请将其值更改为“
对
“。如果它们不在那里,只需像下面的例子一样将它们添加到文件的末尾,然后保存并退出文件。
现在,让我们来分析一下这两个选项的含义:
- Kbd交互身份验证
–当在SSH中启用时,它允许服务器参与2FA交互过程。例如,在输入密码(第一个因素)后,服务器可能会提示您从2FA应用程序中输入代码(第二个因素)。
- ChallengeResponseAuthentication
–启用后,SSH服务器可以使用质询-响应方法进行身份验证。这包括键盘交互式身份验证等方法,提示用户输入信息以响应挑战。换句话说,在这种情况下,它允许SSH服务器提示用户输入2FA应用程序生成的代码。
最后,重新启动SSH服务器,然后我们可以进入为SSH服务器设置双因素身份验证的最后一步。
sudo systemctl重新启动ssh
步骤5:为SSH的双因素身份验证设置PAM
PAM(Pluggable Authentication Modules,可插拔身份验证模块)在SSH的身份验证过程中发挥着至关重要的作用,为身份验证提供了一个灵活的模块化框架。这意味着SSH没有其硬编码的身份验证方法,而是使用PAM根据需要插入各种身份验证机制。
因此,最后一步是将其配置为允许SSH 2FA。为此,我们打开其配置文件:
sudo vim/etc/pam.d/sshd
然后,我们应该在开头添加以下行:
auth
必修的
pam_google_authenticator
所以
代码语言:
CSS
(
css
)
保存文件,退出,然后进入最后一个最激动人心的部分。
步骤6:测试SSH 2FA
现在,让我们检查一下是否一切正常。要从远程计算机执行此操作,请尝试通过SSH连接到配置为使用双因素身份验证的服务器。
系统将提示您输入验证码。在您的移动设备上打开Google Authenticator应用程序,并在终端中键入它显示的6位数代码。当你打字时,它不会显示在屏幕上。
接下来,您需要输入用户的密码。一旦放入正确的密码,您将获得对服务器的SSH访问权限。
如果你在systemd日志中查看幕后发生的事情,你会发现登录过程运行得很好。来自Google Authenticator的双因素身份验证代码和用户密码被成功接受。
然而,正如systemd日志所示,即使您键入了正确的密码但使用了错误的代码,也不允许您通过SSH连接到服务器。
干得好!您已经成功地设置了双因素SSH身份验证,使您的服务器更加安全,并得到很好的保护,免受未经授权的访问。
可选:在SSH 2FA中包含基于密钥的身份验证
好吧,我们已经取得了很好的进展,但我们可以让事情变得更好。让我们为双因素身份验证过程添加一个SSH密钥。这增加了一层额外的安全性,同时避免了依赖用户密码的不太安全的方法。
为了实现这一点,我们假设您已经生成了一对私钥和公钥,并对设置和运行的服务器进行了无密码SSH身份验证。然而,如果您还没有,我们提供了一个指南,可以帮助您快速简单地完成任务。现在,回到主题上来。
首先,打开“
/etc/ssh/shd_config
“文件并设置”
密码身份验证
“选项到”
不
,”如下图所示。
这告诉SSH服务器禁用密码身份验证,这样用户就无法使用常规用户名和密码登录。相反,他们必须使用其他身份验证方法,如基于SSH密钥的身份验证。
然后,将下面显示的选项添加到您的“
sshd_config
文件
身份验证方法公钥、键盘交互
- 身份验证方法
:指定必须成功完成才能授予用户访问权限的身份验证方法。
- 公钥
:这表示第一种身份验证方法基于公钥身份验证。
- 键盘交互式
:这是继“
公钥
”方法已成功完成。它通常涉及用户输入信息以响应提示。在我们的案例中,这涉及到引入由Google Authenticator应用程序生成的2FA代码。
保存文件,关闭它,然后重新启动SSH服务。
sudo systemctl重新启动ssh
现在,打开“
/etc/pam.d/sshd
文件,找到行
@包括公共身份验证
,”并在其前面加上注释标记(#)。这将阻止PAM使用用户的帐户密码登录。
现在尝试通过SSH再次登录——神奇的事情发生了!要求您输入用户密码的提示消失了。
只需在您的移动设备上输入Google Authenticator应用程序生成的6位代码,您就会登录。SSH密钥将在后台自动发送到服务器。
然而,我们再次澄清,在实现此方法之前,您需要设置SSH服务器的无密码身份验证。
结论
为SSH访问设置双因素身份验证(2FA)对于增强远程连接的安全性至关重要。本文详细介绍了配置Google Authenticator、修改SSH服务器设置以及为SSH的2FA设置PAM的步骤。
结果是,您的SSH服务器现在可以很好地抵御暴力攻击和未经授权的访问尝试。此外,将基于密钥的身份验证结合到SSH 2FA过程中增加了一层安全性,超越了仅依赖密码。
谢谢你抽出时间!一如既往,我们非常欢迎您的反馈和意见。
相关推荐
您是否突然与Roblox断开连接,并收到错误代码262:“发送数据时出现问题,请重新连接”?该错误通常发生在您的互联网连接或Roblox的服务器关闭时。 然而,还有其他原因,比如带宽不足,使用第三方MOD和扩展程序,在玩Roblox时运行下载,或者只是互联网连接不稳定。如果你在玩Roblox时遇到这个错误,这里有一些你可以应用的可能的修复。 1.排除临时问题 您的设备和Roblox服务器之间的连接
这个 showmount 命令提供有关NFS服务器上共享的信息。mountd守护程序在主机上维护这些信息。 该命令查询远程主机上的已装载守护进程,以获取有关该计算机上NFS服务器状态的信息。 相关:如何在Windows10和WSL2中访问Linux文件系统 主机的默认值是主机名返回的值。在没有选项的情况下,显示已从主机装载目录的客户端。这个 showmount 命令通常位于 /usr/sbin ,
WordPress是最流行的用于创建和管理网站的开源内容管理系统。凭借超过60%的CMS市场份额,它为超过40%的互联网提供了动力。 这就是为什么全球数百万用户热切期待每一个新版本,包括预计于3月26日发布的6.5版本。然而,它并没有按计划到达,原因如下。 为什么WordPress 6.5被推迟到4月2日? 在WordPress开发团队最近的一次更新中,备受期待的WordPress 6.5的发布日
想象一下,如果我说将Wayland与NVIDIA相结合,可以在Linux系统上为您提供有史以来最流畅的体验。想象一下,没有恼人的闪烁、故障、屏幕伪影、滞后或应用程序崩溃。一切都将以光速运行,并尽可能地平滑和愉悦感官。 不,我写这篇文章的时候并没有疯掉。我将要分享的内容,称为 显式同步 ,将彻底改变Wayland的形象。它正在从被视为一种更好但不完全存在的显示协议发展成为一种可行的解决方案。这是一个
有兴趣探索Gentoo,但担心其复杂性?Redcore提供了一个用户友好的解决方案,使安装和管理无忧。这是一个基于Gentoo的Linux发行版,旨在使Gentoo功能更易于访问和用户友好。 该发行版基于Gentoo的测试分支,默认情况下使用硬化的概要文件。除了众所周知的GentooLinux安装之外,它还提供了多种额外的安全服务。 自上一次发布以来,经过11个月的开发,代号为“Taralized
回到顶部