OffshoreVps
安全2026年10月5日阅读约 6 分钟作者:OffshoreVps 团队

SSH 密钥详解:5 分钟保护你的 VPS 登录

创建 Ed25519 密钥,复制到服务器,安全地禁用密码登录,并设置整洁的 SSH 配置。每台新服务器都应该这样做。

SSH 密码会被猜出来,密钥则不会。把 VPS 改成基于密钥的登录,是你能做的最大的单项安全升级,而且只需大约五分钟。

VPS 上的终端窗口,显示 VPS 的 SSH 密钥所用的命令,以“ssh-keygen -t ed25519 -C "me@laptop"”开头
本指南中你将在服务器上运行的那类命令。

SSH 密钥如何工作

你会创建一对文件。私钥留在你的电脑上,绝不共享;公钥放到服务器上。连接时,服务器会要求你的电脑证明它持有匹配的私钥,而私钥本身从不经过网络传输。

1. 创建密钥对

ssh-keygen -t ed25519 -C "me@laptop"

Ed25519 密钥短小、快速且现代。提示时请设置一个口令短语,这样笔记本电脑被盗也不会导致服务器被盗。在 Windows 10 和 11 上,同样的命令可以在 PowerShell 中使用。

2. 将公钥复制到服务器

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

如果没有 ssh-copy-id,请把 ~/.ssh/id_ed25519.pub 的内容追加到服务器上的 ~/.ssh/authorized_keys,然后运行 chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys。

本指南的步骤依次为:1. SSH 密钥如何工作;2. 1. 创建密钥对;3. 2. 将公钥复制到服务器;4. 4. 禁用密码登录;5. 5. 整洁的客户端配置;6. 良好实践
本指南的步骤,按顺序排列。

3. 关闭密码前先测试

打开第二个终端并用密钥登录。在这一步成功之前,请保持第一个会话打开,这样即使出错也不会把你锁在外面。

4. 禁用密码登录

sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
sudo sshd -t && sudo systemctl reload ssh

sshd -t 检查能在笔误破坏你的访问之前将其发现。在某些系统上,该服务叫作 sshd 而不是 ssh。

5. 整洁的客户端配置

# ~/.ssh/config
Host myvps
    HostName your.server.ip
    User deploy
    IdentityFile ~/.ssh/id_ed25519

现在只需输入 ssh myvps 即可。

良好实践

  • 每台设备使用单独的密钥,这样你可以吊销其中一个而不影响其他设备。
  • 使用 ssh-agent,这样每个会话只需输入一次口令短语。
  • 当设备丢失或员工离职时,从 authorized_keys 中删除对应的密钥。
  • 添加 fail2ban 以减少日志噪音,参见我们的 15 分钟加固清单。