为 VPS 配置 SSH 密钥登录

961 字
5 分钟
为 VPS 配置 SSH 密钥登录

使用 SSH 密钥有什么好处#

  • 私钥留在本地设备,服务器不需要保存或接收登录密码,能避开大量针对密码的撞库和弱口令尝试
  • 一把密钥可以安全地部署到多台自己管理的 VPS;需要撤销访问权限时,只需删除对应公钥
  • 配合私钥口令后,即使私钥文件遗失,取得文件的人也不能直接登录服务器

本文以 Windows 客户端连接 Linux VPS 的 root 用户为例。若使用普通用户,只需把文中的 /root 换成该用户的家目录

先保留当前会话

部署和测试期间不要关闭已经登录 VPS 的终端。新密钥无法使用时,当前会话是最直接的恢复入口

在 Windows 生成密钥#

在 PowerShell 中执行。-a 64 会增加 Ed25519 私钥 KDF 的计算成本;-f 指定私钥文件名

PowerShell
ssh-keygen -t ed25519 -a 64 -f "$env:USERPROFILE\.ssh\文件名" -C "公钥注释"

参数讲解:

  • -t ed25519:指定密钥算法
  • -a 64:增加 passphrase(密钥密码)加密私钥时的哈希迭代次数(默认是 16)
  • -f “$env.ssh\文件名”:指定输出的文件路径和文件名
    • $env:USERPROFILE 代表 Windows 当前用户的家目录(如 C:\Users\用户名
  • -C “公钥注释”:写入公钥文件末尾的字符串标记,用于区分这个密钥的作用或所属设备

命令执行后会询问是否设置私钥口令。建议设置一个口令:即使私钥文件被复制走,也不能直接用于登录

之后会发现在文件夹下面会出现两个文件,一个有.pub后缀代表着公钥,另一个没有.pub后缀代表私钥

查看并复制公钥内容:

PowerShell
Get-Content "$env:USERPROFILE\.ssh\文件名.pub"

公钥以 ssh-ed25519 开头。复制这一整行(包括开头的ssh-ed25519和结尾的文件名)

私钥文件 vps_ed25519 不应上传、发送或粘贴到任何网站

把公钥写入 VPS#

在当前的 VPS 上,以目标用户身份执行以下命令。第一次配置时,install 会创建 .ssh 目录并设置正确权限

Terminal window
install -d -m 700 /root/.ssh

追加公钥:

Terminal window
tee -a /root/.ssh/authorized_keys

粘贴刚才复制的一整行公钥,按 Enter 后按 Ctrl+D 结束输入。最后收紧文件权限:

Terminal window
chmod 600 /root/.ssh/authorized_keys
多台服务器

同一把公钥可以部署到多台自己管理的 VPS;每台服务器都会在自己的 authorized_keys 中保存一行。私钥无需复制到服务器

验证登录#

在 Windows 另开一个 PowerShell 窗口。将端口和地址替换为实际值:

PowerShell
ssh -p 25565 -i "$env:USERPROFILE\.ssh\文件名" root@IP

首次连接会要求确认服务器指纹。应与 VPS 控制台或既有会话中看到的主机指纹核对;不要在未核对的情况下随意接受变更后的指纹。

登录成功后,确认服务器已识别出密钥认证:

VPS
sshd -T | grep -E 'pubkeyauthentication|passwordauthentication'

确认新窗口可以稳定登录后,才考虑在 SSH 配置中关闭密码登录。端口调整可参阅 修改 SSH 端口

登录告警可参阅

Telegram SSH 登录告警
在 Ubuntu VPS 上通过 PAM 在 SSH 成功登录后向 Telegram 发送包含来源 IP 和北京时间的告警。
2026-08-03运维#网络安全#SSH#Telegram#Linux#VPS#监控

常见问题#

仍然要求输入服务器密码#

通常是公钥没有完整写入、写到了错误用户的家目录,或 .sshauthorized_keys 权限过宽。服务器上可检查:

VPS
ls -ld /root/.ssh
ls -l /root/.ssh/authorized_keys
tail -n 1 /root/.ssh/authorized_keys

目录应为 700,文件应为 600。最后一行应是 Windows 中复制的公钥

私钥文件找不到#

检查文件是否仍在默认目录:

PowerShell
Get-ChildItem "$env:USERPROFILE\.ssh\vps_ed25519*"

不要为图省事重新生成并覆盖旧私钥。若确实丢失私钥,在服务器上添加新公钥后,再删除对应的旧公钥

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

为 VPS 配置 SSH 密钥登录
https://20050209.xyz/posts/ssh-key-login/
作者
Erythritol
发布于
2026-08-03
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Erythritol
Hello, I'm Erythritol.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
最新动态
站点统计
文章
7
分类
3
标签
21
总字数
8,380
运行时长
0
最后活动
0 天前