所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
China
安全 虚拟服务器

SSH密钥用于云服务器:完整设置与安全指南

SSH(安全外壳协议)密钥认证是保护云服务器访问安全的黄金标准。无论您是管理单个 VPS 托管实例,还是整个独立服务器集群,用加密密钥对替代基于密码的登录方式都能显著缩小攻击面,并简化管理工作流程。本综合指南涵盖您需要了解的一切内容——从底层机制到逐步配置和安全加固最佳实践。

什么是 SSH 密钥?

SSH 密钥是用于向 SSH 服务器验证客户端身份的非对称加密密钥对。与用户名/密码组合不同——后者容易受到暴力破解攻击、凭证填充和网络钓鱼的威胁——SSH 密钥依赖于两个不同组件之间的数学关系:

  • 私钥:仅存储在您的本地计算机上。此文件绝不能共享、传输或暴露。它是您身份的证明。
  • 公钥:部署到远程服务器上。可以自由共享而不会影响安全性。

当您发起 SSH 连接时,服务器会检查您的公钥是否存在于其 ~/.ssh/authorized_keys 文件中。如果存在,服务器会发出一个加密挑战,只有持有对应私钥的人才能解答。成功响应后即可获得访问权限——无需密码。

为什么要在云服务器上使用 SSH 密钥?

SSH 密钥认证相比传统密码登录具有具体、可量化的优势:

功能密码认证SSH 密钥认证
暴力破解抵抗力极高
网络钓鱼漏洞
自动化支持优秀
无密码登录
访问撤销需要更改密码authorized_keys 中删除密钥

主要优势详解

增强安全性

SSH 密钥使用 2048 位至 4096 位 RSA 加密(或 Ed25519 椭圆曲线密码学),在计算上几乎不可能被破解。网络上不传输任何共享密钥,完全消除了拦截风险。

操作便捷性

配置完成后,SSH 密钥即可实现无密码登录。对于管理多台服务器的管理员——包括运行 VPS 控制面板的环境——这消除了重复输入凭证的需要,并大幅提升工作效率。

自动化就绪

CI/CD 流水线、部署脚本、配置管理工具(Ansible、Puppet、Chef)以及备份任务都依赖于非交互式 SSH 认证。基于密钥的认证是这些使用场景的唯一实用解决方案。

精细化访问控制

每个用户或服务都获得唯一的密钥对。撤销特定用户的访问权限只需从服务器中删除其公钥——无需重置密码,无需锁定账户。

SSH 密钥认证的工作原理:逐步解析

了解认证握手过程有助于您排查问题,并理解为什么这种方法如此安全:

  1. 连接请求:您的 SSH 客户端向服务器发送连接请求,并声明其打算使用的公钥。
  2. 密钥查找:服务器在 ~/.ssh/authorized_keys 中搜索匹配的公钥。
  3. 挑战发布:如果找到匹配项,服务器生成一个随机挑战并使用您的公钥对其加密。
  4. 挑战响应:您的 SSH 客户端使用私钥解密挑战,并发回从解密数据派生的加密签名。
  5. 验证与访问:服务器使用公钥验证签名。如果有效,则授予访问权限——整个过程无需传输任何密码。

整个交换过程在毫秒内完成,并且在正确配置主机密钥验证的情况下,能够抵御中间人攻击。

如何生成 SSH 密钥

在 Linux 或 macOS 上

打开终端并运行以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

参数说明:

  • -t rsa — 指定 RSA 算法
  • -b 4096 — 生成 4096 位密钥(比默认的 2048 位更强)
  • -C "your_email@example.com" — 在密钥中嵌入标识注释

现代替代方案——Ed25519(推荐):

ssh-keygen -t ed25519 -C "your_email@example.com"

Ed25519 密钥更短、更快,对于大多数现代使用场景被认为比 RSA-4096 更安全。

在密钥生成过程中,您将被提示:

  1. 选择保存位置——按 Enter 接受默认位置(~/.ssh/id_rsa~/.ssh/id_ed25519
  2. 设置密码短语——强烈建议设置。这会加密磁盘上的私钥,在您的计算机被入侵时提供第二层保护

生成后,您将拥有两个文件:

  • ~/.ssh/id_rsa — 您的私钥(切勿共享)
  • ~/.ssh/id_rsa.pub — 您的公钥(可安全分发)

在 Windows 上

Windows 10 和 Windows 11 原生包含 OpenSSH。打开 PowerShell命令提示符并运行:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

操作过程与 Linux/macOS 相同。您的密钥将保存到 C:UsersYourUsername.ssh

替代方案:PuTTYgen

如果您使用 PuTTY 作为 SSH 客户端:

  1. 打开 PuTTYgen
  2. 选择 RSA 并将位数设置为 4096
  3. 点击 Generate(生成)并移动鼠标以创建熵
  4. 保存私钥(.ppk 格式)并复制公钥文本

将 SSH 公钥添加到云服务器

生成密钥对后,必须将公钥安装到目标服务器上。

方法一:使用 ssh-copy-id(Linux/macOS——推荐)

ssh-copy-id user@your-server-ip

此命令会自动将您的公钥追加到远程服务器上的 ~/.ssh/authorized_keys。您将被提示输入一次密码——此后便不再需要基于密码的访问。

要指定特定的密钥文件:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@your-server-ip

方法二:手动安装(所有平台)

ssh-copy-id 不可用或需要精确控制时,请使用此方法。

第一步:显示您的公钥:

cat ~/.ssh/id_rsa.pub

复制完整输出——它看起来类似于:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... your_email@example.com

第二步:使用密码认证连接到您的服务器:

ssh user@your-server-ip

第三步:如果 .ssh 目录不存在,则创建它:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

第四步:将您的公钥添加到 authorized_keys 文件:

nano ~/.ssh/authorized_keys

粘贴公钥,保存并退出(Ctrl+X,然后 Y,再 Enter)。

第五步:设置正确的文件权限:

chmod 600 ~/.ssh/authorized_keys

> 重要提示:权限不正确会导致 SSH 静默拒绝您的密钥。.ssh 目录必须为 700authorized_keys 必须为 600

第六步:在关闭当前会话之前测试连接:

ssh -i ~/.ssh/id_rsa user@your-server-ip

禁用密码认证(强烈建议)

一旦确认 SSH 密钥认证正常工作,禁用密码登录将消除针对 SSH 服务器最常见的攻击向量。这是任何生产环境的必要安全加固步骤。

第一步:打开 SSH 守护进程配置文件:

sudo nano /etc/ssh/sshd_config

第二步:找到并修改以下指令:

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
PermitRootLogin prohibit-password

第三步:保存文件并重启 SSH 服务:

sudo systemctl restart sshd

> 警告:在重启 sshd 之前,请在单独的终端会话中验证您的 SSH 密钥登录是否正常工作。将自己锁定在远程服务器之外是严重的操作风险。

此更改后,只有提供有效授权 SSH 密钥的客户端才能连接。

高级 SSH 密钥管理

管理多个用户

要授予多个用户访问服务器的权限,只需将每个用户的公钥追加到 authorized_keys 文件的新行中:

nano ~/.ssh/authorized_keys
# Add one public key per line

撤销访问权限

要撤销特定用户的访问权限,打开 authorized_keys,找到其密钥(可通过末尾的注释识别),并删除该行:

nano ~/.ssh/authorized_keys

无需重启服务——更改立即生效。

使用 SSH 配置文件管理多台服务器

如果您管理多台服务器,SSH 配置文件(~/.ssh/config)可简化连接操作:

Host alexhost-vps
    HostName your-server-ip
    User root
    IdentityFile ~/.ssh/id_rsa_alexhost
    Port 22

Host alexhost-dedicated
    HostName your-dedicated-ip
    User admin
    IdentityFile ~/.ssh/id_rsa_dedicated

使用此配置,连接只需:

ssh alexhost-vps

使用 ssh-agent 管理密码短语

如果您的私钥受密码短语保护,ssh-agent 会将其缓存在内存中,这样每个会话只需输入一次:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

SSH 密钥安全最佳实践

最佳实践重要原因
使用 Ed25519 或 RSA-4096最大化加密强度
始终设置密码短语在您的计算机被入侵时保护私钥
切勿共享私钥共享私钥会完全破坏安全模型
定期轮换密钥在密钥被悄然泄露时限制暴露窗口
每台服务器使用唯一密钥一个密钥被泄露不会暴露所有服务器
禁用 root 密码登录消除最高权限的攻击目标
监控 authorized_keys检测未经授权的密钥添加

SSH 密钥与 AlexHost 服务

SSH 密钥认证在所有 AlexHost 服务器产品中均受支持。无论您是在共享虚拟主机上部署轻量级应用程序,使用完全托管的带 cPanel 的 VPS 进行扩展,还是在 GPU 托管上运行计算密集型工作负载,基于 SSH 密钥的访问都能为您的基础设施提供所需的安全基础。

为实现完整的服务器安全,建议将 SSH 加固与 SSL 证书配合使用,以加密所有面向 Web 的流量——确保服务器管理和用户访问的端到端保护。

常见问题解答

我可以在同一台服务器上使用多个 SSH 密钥吗?

可以。每个公钥在 authorized_keys 中占一行。授权密钥的数量没有实际限制。

如果我丢失了私钥会怎样?

您将失去通过该密钥对的访问权限。如果密码认证已被禁用且没有其他访问方式,您可能需要使用托管服务商的带外控制台访问(例如 AlexHost 的 VPS 控制面板)来重新获得访问权限并添加新密钥。

Ed25519 比 RSA 更好吗?

对于大多数现代使用场景,是的。Ed25519 以更短的密钥和更快的操作提供同等或更优的安全性。RSA-4096 仍然可以接受,但被许多安全专业人员视为遗留方案。

我应该对所有服务器使用相同的 SSH 密钥吗?

不应该。每台服务器使用唯一的密钥对可以限制爆炸半径——如果一个私钥被泄露,只有该服务器面临风险。

结论

SSH 密钥认证不仅仅是最佳实践——它是任何严肃的云服务器部署的基线安全要求。通过用加密密钥对替代脆弱的密码登录,您可以消除整类攻击,包括暴力破解、凭证填充和密码拦截。

设置过程只需一次性的适度投入:生成密钥对、将公钥部署到服务器、禁用密码认证,并实施本指南中概述的管理实践。这项投入的回报是一个安全性大幅提升、更易管理、更适合自动化的服务器基础设施。

立即使用 AlexHost 的系列托管解决方案保护您的服务器安全——从入门级 VPS 托管到高性能独立服务器——所有产品从第一天起就支持现代安全标准。

安全 管理
安全 管理
管理 虚拟服务器

所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
快速获取信息
快速获取信息

节省您的时间,快速解答您的问题

自己解决问题
自己解决问题

知识库包含详细的教程,让您可以自己处理技术任务。

提高技能
提高技能

通过使用知识库,您可以扩展有关虚拟主机和相关主题的知识

插图和图表
插图和图表

许多文章都配有插图和图表,使复杂的过程和设置更容易理解。

实用技巧
实用技巧

你会找到有用的技巧和窍门,以提升你的网站或网络应用的性能。

给定主题的相关性
给定主题的相关性

知识库中的信息会定期更新,以反映 IT 基础设施和 AlexHost 服务领域的最新变化和趋势。

没有找到您要找的主题?有一个完美的解决方案

杰出的客人和客户!您的便利是我们的首要任务!如果您在安装任何特定软件或部署服务器时遇到困难,请随时联系我们。我们重视您的意见,并随时准备帮助您解决问题。

此外,我们还为您提供了积极参与创建知识库的机会。如果您有希望纳入我们数据库的主题或问题,请告诉我们!我们随时准备根据您的需求撰写详细的文章和指南。

我们努力使您在 AlexHost 的体验尽可能方便和高效,您对知识库的贡献有助于我们实现这一目标。联系我们 ->
info@alexhost.com 并让我们知道如何让您的住宿体验更加完美。

Solution Image