文章深入探讨了 Linux 服务器 SSH 身份验证的三种主要方法:密码、SSH 密钥和 SSH 证书。作者详细分析了每种方式的优缺点,指出密码易受攻击,SSH 密钥在规模化管理和轮换上存在挑战。文章重点推崇 SSH 证书方案,因其支持集中管理、即时授权和短效凭证,能显著提升安全性与可扩展性。最后,文章介绍了如何利用开源工具 Infisical 简化 SSH 证书颁发机构(CA)的搭建、策略配置及证书签发流程,为开发者提供了从理论到实践的完整指南。
在确保 Linux 服务器访问安全方面,选择何种 SSH 身份验证方法会带来巨大的差异。从简单的密码到复杂的基于证书的系统,理解便捷性与安全性之间的权衡至关重要。在这篇博文中,我们将深入探讨三种最常见的 SSH 身份验证方法:密码、SSH Key 和 SSH 证书。
在介绍每种方法时,我们会讨论它们各自的优缺点,揭示在简单性与稳健性之间取得平衡时所面临的挑战。不过,我们的最终目标是让你相信,SSH 证书是管理 Linux 服务器访问的更优选择。
但我们不会只停留在理论层面。我们还将向你介绍 Infisical,这是一个功能强大的工具,可以简化 SSH 证书的设置和管理过程。在本文结束时,你不仅会深入理解 SSH 身份验证方法,还将具备在自己的环境中实施 SSH 证书所需的工具和知识。
因此,无论你是希望提升安全实践的资深系统管理员,还是 SSH 世界的新手,本文都将成为你解锁 SSH 身份验证全部潜力的指南。准备好发现一种更好的方式来保护你的 Linux 服务器吧!
密码身份验证是登录 SSH 服务器最古老且最常见的方式。它默认启用,并使用 SSH 主机上已有账户的密码。关于它的工作原理,确实没有太多可说的;如果你用过 SSH,那你肯定已经这样操作过了!

虽然密码身份验证几乎是最简单的 SSH 凭据方式,但它也是保护 SSH 服务器最不安全的方法。密码是长期凭据,这意味着一旦你的密码泄露,它就可能被滥用,直到你发现问题或更改密码。那么,密码到底有多容易被攻破呢?
不幸的是,密码很难得到妥善保护。密码极易被重复使用,而且通常与用户生活相关的单词或短语相似。这使得密码既容易被猜中,也容易被发现。此外,人们通常也不擅长定期轮换密码。总是记住新密码并不容易,尤其是当密码足够复杂、能够保证安全时。
尽管存在风险,但在出现一种至少同样易于使用和设置的替代方案之前,密码身份验证仍会继续作为标准。正如你在接下来的章节中将看到的,摆脱密码确实需要做一些额外工作。在继续之前,让我们回顾一下基于密码的 SSH 身份验证的优缺点:
优点:
缺点:
访问 SSH 服务器的下一种最常见方式是使用公钥身份验证,通常称为 SSH Key 验证。SSH Key 通过使用在密码学上不可猜测的私钥作为 SSH 凭据,解决了密码存在的“可猜测性”问题。从可用性的角度来看,SSH Key 只是一个文件,你可以将其作为参数传递给 ssh,或添加到你的 SSH Agent 中。

SSH Key 的设置相当简单。你只需将 SSH Key 对应的公钥复制到你要访问的服务器上的 ~/.ssh/authorized_keys 文件中即可。不过,你必须在每台想要访问的服务器上都执行此操作,这也引出了使用 SSH Key 的最大挑战:轮换它们。
如果你的 SSH 私钥被盗或泄露,你必须登录所有该 SSH Key 可以访问的服务器,并从每个 authorized_keys 文件中删除对应的公钥。这不仅耗时,而且很难追踪你的 SSH Key 被授权登录的每一个地方。遗漏某些地方的可能性非常高,这使得 SSH Key 泄露成为一件非常严重的事情。
为了降低 SSH Key 泄露的风险,你可以采取的一种措施是用密码保护你的 Key。不过,你可能也能看出其中的讽刺之处:现在我们又多了一个必须记住的密码,这又把我们试图通过密码身份验证摆脱的可用性负担带了回来。
幸运的是,有一些工具可以让 SSH Key 的使用和设置变得更轻松。例如,像 KeePassXC 这样的密码管理器可以与你的 SSH Agent 集成,在你解锁受保护的保险库时导入你所有的 SSH Key。
在设置方面,一些 Linux 服务器发行版允许你在安装服务器时从 GitHub 导入 SSH 公钥。这意味着你不需要先通过密码身份验证去编辑 authorized_keys 文件——你可以直接开始使用 SSH Key!

通过利用上述工具,在大多数情况下你都可以将 SSH Key 作为密码身份验证的更安全替代方案。尽管它们易于设置和使用,但 SSH Key 仍然是长期凭据,而且难以轮换……我们其实还可以做得更好。在继续之前,请查看下面的摘要,回顾 SSH Key 的优缺点:
优点:
缺点:
SSH 证书解决了大规模部署和轮换 SSH 凭据时面临的挑战。以下是 SSH 证书在高层次上的工作原理:

通过集中管理多个 Linux 服务器的 SSH 访问,SSH CA 可以轻松授予即时访问(just-in-time access)权限,并在需要时撤销特定客户端的访问权限。SSH 证书身份验证唯一的缺点是,与其他类型的 SSH 凭据相比,设置 SSH CA 和配置访问权限的前期过程要复杂得多。
在简要回顾这些优缺点之后,我们将对不同类型的 SSH 凭据进行整体比较,并向你展示 SSH 证书在实践中是如何工作的。
优点:
缺点:
密码身份验证对 SSH 服务器来说是开箱即用的,但在可能的情况下确实应尽量避免使用。密码太脆弱,也太容易受到不良使用习惯的影响,难以为 Linux 服务器提供安全访问。SSH Key 是密码更好的替代方案,而且仍然相当容易设置和使用。它们提供了更好的安全性,但遗憾的是,这种安全性并不适合大规模场景。如果你需要管理大量服务器并撤销 Key,SSH Key 就会变得非常难以处理。
最终,SSH 证书提供了最佳的安全性和可扩展性。这些改进的代价是增加了一些复杂性,但如果有合适的工具来管理 SSH 证书,这就不是什么大问题了。
基于证书的 SSH 身份验证最困难的部分,是设置 CA 和对客户端进行授权。幸运的是,Infisical 让这些事情变得简单。在下一节中,我们将探讨如何利用 Infisical 来管理 SSH 证书。
Infisical SSH 通过处理 SSH 证书身份验证中的三个关键组件,来管理对 Linux 服务器的访问:
SSH CA:Infisical 充当受信任的 SSH CA,负责向客户端颁发 SSH 证书
证书模板:模板是预先配置的访问策略,用于定义哪些用户可以访问哪些系统,以及访问时长
SSH 证书:客户端可以向 Infisical 进行身份验证,从预先配置的模板中请求 SSH 证书
这三个组件共同提供了安全且集中管理的 Linux 服务器访问。设置它们需要经过几个步骤,但一旦配置完成,使用起来就会非常轻松。
对于 SSH 证书身份验证,所有授权逻辑都由 Infisical 处理。在你的 Linux 服务器上,你需要做的只是配置 SSH 守护进程来信任 Infisical CA。首先,你需要登录 Infisical,进入 SSH 选项卡,如果你还没有项目,就创建一个新项目。

在项目中,进入 Certificate Authorities 选项卡并创建一个新的 SSH CA。

接下来,点击新创建的 CA 进入 CA 详情页。在左侧显示公钥的位置,点击 “Save public key” 按钮将其导出为文件。

获得 CA 的公钥后,将其传输到你要配置的主机上,并放置在 /etc/ssh/infisical-ca.pub。编辑每个主机的 /etc/ssh/sshd_config 文件,并添加以下内容:
TrustedUserCAKeys /etc/ssh/infisical-ca.pub
PubkeyAcceptedKeyTypes=+ssh-rsa,ssh-rsa-cert-v01@openssh.com
最后,使用 sudo systemctl restart sshd 重启 SSH 守护进程。
现在,Infisical 已经被信任来委派对 SSH 服务器的访问权限,我们可以以证书模板的形式创建访问策略。回到 CA 详情页,点击 Certificate Templates 框右上角的 “+” 按钮。

接下来是最需要思考的部分。你需要决定允许为哪些用户账户和服务器颁发证书。你还需要配置每个证书的有效期,这是防止被盗或泄露的证书被反复使用的关键部分。

保存配置后,你的证书模板就可以使用了!如果你对如何使用 Infisical 设置 SSH 模板有疑问,请参阅 官方文档。
现在,剩下的就是使用证书模板来访问你的 SSH 服务器了!为此,你需要 Infisical CLI 工具。首先,使用 infisical login 登录 Infisical。然后,请求一个 SSH 证书并将其加载到 SSH Agent 中:
infisical ssh issue-credentials --certificateTemplateId=<template-id> --principals=<username> --addToAgent
就是这样!现在你可以执行 ssh username@hostname,然后就应该能登录了!
每次当前证书过期时,你都可以使用 infisical ssh issue-credentials ... 命令来获取新证书。我建议为该命令设置一个别名,这样你就不需要每次都完整输入它。
对于 SSH 凭据来说,并不存在一种放之四海而皆准的方法。有时你需要使用开箱即用的方案,有时你则需要更安全的方式来访问 Linux 服务器。希望本文能帮助你更好地理解 SSH 证书、为什么需要它们,以及如何使用它们。
正如我们所看到的,Infisical 让 SSH 证书管理在设置和使用上都变得更加容易。如果你还没有在自己的家庭实验室或企业网络中部署 Infisical,可以看看我关于 如何自托管 Infisical 的博文!等你把 Infisical 配置好之后,希望你能回到本指南,试试 SSH 证书。
- 原文链接: infisical.com/blog/ssh-c...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码