为 VPS 配置 SSH 密钥登录
使用 SSH 密钥有什么好处
- 私钥留在本地设备,服务器不需要保存或接收登录密码,能避开大量针对密码的撞库和弱口令尝试
- 一把密钥可以安全地部署到多台自己管理的 VPS;需要撤销访问权限时,只需删除对应公钥
- 配合私钥口令后,即使私钥文件遗失,取得文件的人也不能直接登录服务器
本文以 Windows 客户端连接 Linux VPS 的 root 用户为例。若使用普通用户,只需把文中的 /root 换成该用户的家目录
部署和测试期间不要关闭已经登录 VPS 的终端。新密钥无法使用时,当前会话是最直接的恢复入口
在 Windows 生成密钥
在 PowerShell 中执行。-a 64 会增加 Ed25519 私钥 KDF 的计算成本;-f 指定私钥文件名
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后缀代表私钥
查看并复制公钥内容:
Get-Content "$env:USERPROFILE\.ssh\文件名.pub"公钥以 ssh-ed25519 开头。复制这一整行(包括开头的ssh-ed25519和结尾的文件名)
私钥文件 vps_ed25519 不应上传、发送或粘贴到任何网站
把公钥写入 VPS
在当前的 VPS 上,以目标用户身份执行以下命令。第一次配置时,install 会创建 .ssh 目录并设置正确权限
install -d -m 700 /root/.ssh追加公钥:
tee -a /root/.ssh/authorized_keys粘贴刚才复制的一整行公钥,按 Enter 后按 Ctrl+D 结束输入。最后收紧文件权限:
chmod 600 /root/.ssh/authorized_keys同一把公钥可以部署到多台自己管理的 VPS;每台服务器都会在自己的 authorized_keys 中保存一行。私钥无需复制到服务器
验证登录
在 Windows 另开一个 PowerShell 窗口。将端口和地址替换为实际值:
ssh -p 25565 -i "$env:USERPROFILE\.ssh\文件名" root@IP首次连接会要求确认服务器指纹。应与 VPS 控制台或既有会话中看到的主机指纹核对;不要在未核对的情况下随意接受变更后的指纹。
登录成功后,确认服务器已识别出密钥认证:
sshd -T | grep -E 'pubkeyauthentication|passwordauthentication'确认新窗口可以稳定登录后,才考虑在 SSH 配置中关闭密码登录。端口调整可参阅 修改 SSH 端口;
登录告警可参阅
常见问题
仍然要求输入服务器密码
通常是公钥没有完整写入、写到了错误用户的家目录,或 .ssh 与 authorized_keys 权限过宽。服务器上可检查:
ls -ld /root/.sshls -l /root/.ssh/authorized_keystail -n 1 /root/.ssh/authorized_keys目录应为 700,文件应为 600。最后一行应是 Windows 中复制的公钥
私钥文件找不到
检查文件是否仍在默认目录:
Get-ChildItem "$env:USERPROFILE\.ssh\vps_ed25519*"不要为图省事重新生成并覆盖旧私钥。若确实丢失私钥,在服务器上添加新公钥后,再删除对应的旧公钥
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!







