SSH 密钥管理与安全终极指南
安全外壳协议 (SSH) 是管理 Linux 服务器的标准协议。虽然可以使用密码,但 SSH 密钥提供了一种显著更安全且更方便的替代方案。然而,正确管理这些密钥——从生成到轮换——对于保持强大的安全态势至关重要。
本指南涵盖了您需要了解的关于 SSH 密钥的所有内容,从基础生成到高级管理策略。
1. 生成安全密钥
SSH 安全的第一步是选择正确的算法并生成强大的密钥对。
在线 SSH 密钥生成器
虽然 在线 SSH 密钥生成器 对于测试或快速创建密钥对很方便,但您 绝不 应将基于 Web 的工具用于生产密钥。请始终在本地计算机上生成私钥,以确保它们永远不会通过网络传输。
Ssh-keygen 命令构建器
生成密钥的标准工具是 ssh-keygen。ssh-keygen 命令构建器 可以帮助您选择最佳参数。如今,您应该优先选择 Ed25519 而不是过时的 RSA。
推荐的现代安全密钥生成命令:
ssh-keygen -t ed25519 -C "[email protected]"
如果为了与旧系统兼容而必须使用 RSA,请确保其至少为 4096 位:
ssh-keygen -t rsa -b 4096
2. 管理访问:Authorized_keys 格式
authorized_keys 文件(通常位于 ~/.ssh/)决定了哪些公钥被允许以特定用户身份登录。
Authorized_keys 格式
authorized_keys 格式 中的单个条目由三部分组成:
- 选项 (可选): 限制密钥可以执行的操作(例如
from="1.2.3.4",no-agent-forwarding)。 - 密钥类型: 算法(例如
ssh-ed25519或ssh-rsa)。 - 公钥数据: 实际的 base64 编码密钥。
- 注释 (可选): 用于识别密钥的标签(通常是电子邮件或主机名)。
带有限制的示例:
from="192.168.1.0/24" ssh-ed25519 AAAAC3Nza... [email protected]
3. 验证服务器:Known_hosts 格式
虽然 authorized_keys 用于客户端身份验证,但 known_hosts 文件用于服务器身份验证。它可以保护您免受中间人 (MITM) 攻击。
Known_hosts 格式
known_hosts 格式 将服务器的主机名或 IP 地址映射到其公共主机密钥。
当您第一次连接到服务器时,SSH 会要求您验证主机的指纹。一旦接受,该密钥就会被添加到 ~/.ssh/known_hosts。如果服务器的密钥发生更改,SSH 将发出警告并阻止连接。
条目格式:
[hostname],[IP] ssh-ed25519 AAAAC3Nza...
4. SSH 安全最佳实践
- 使用密码短语: 始终使用强密码短语保护您的私钥。即使您的密钥被盗,没有密码短语它也是无用的。
- 禁用密码身份验证: 设置好 SSH 密钥后,通过在
/etc/ssh/sshd_config中设置PasswordAuthentication no来禁用密码登录。 - 定期轮换密钥: 与密码一样,SSH 密钥应定期更改,尤其是当员工离职时。
- 使用 SSH 代理: 使用
ssh-agent在内存中存储解密后的密钥,这样您就无需为每次连接都输入密码短语。 - 实施跳板机 (Bastion Host): 不要将所有服务器都暴露在公共互联网上,而是使用单一的、经过加固的入口点。
5. 总结
通过精通 SSH 密钥生成器 并理解 authorized_keys 和 known_hosts 格式,您可以显著降低基础设施遭受未经授权访问的风险。从密码过渡到基于密钥的身份验证是保护任何基于 Linux 的环境的最重要的一步。