本文讲透 SSH 密钥登录:为什么推荐 Ed25519,以及 macOS、Linux、Windows 三种系统如何生成密钥对、把公钥配置到 VPS、用 SSH Agent 省去重复输入密码,最后设置 SSH Alias,让 ssh my-vps 一条命令直连服务器。多服务器管理和常见问题一并覆盖。

SSH 密钥登录(SSH Key Authentication)是目前连接云服务器最安全、最推荐的方式之一。
传统登录方式依赖“用户名 + 密码”,密码一旦泄露或被暴力破解,服务器就等于敞开大门。SSH 密钥改用一对文件完成身份验证,本地保留私钥(Private Key),服务器上存放公钥(Public Key),私钥不出本地,验证过程也不在网络里传输密码。
目前主流云服务器厂商,例如 AWS、阿里云 ECS、腾讯云 CVM、Hostinger VPS、DigitalOcean、Hetzner,都推荐使用 SSH Key 登录,部分平台甚至默认关闭密码登录。
本文将分别介绍在 macOS、Linux、Windows 三种系统里创建 SSH 登录密钥、把公钥配置到 VPS,并设置 SSH 别名。配置完成后,只需要输入 ssh my-vps 就能直接连上服务器,不用再敲 ssh root@服务器IP 这样一长串命令。
SSH 密钥登录原理
SSH 密钥由两个文件组成:私钥和公钥。创建密钥时,系统会同时生成这两个文件,它们的内容一一对应。公钥可以放心交给服务器,私钥必须一直留在自己的电脑里。
SSH 密钥认证流程
你的电脑
持有私钥 id_ed25519,绝不外传
→
SSH 认证
客户端用私钥签名,服务器验证
→
VPS 服务器
authorized_keys 保存公钥,验证通过后放行登录
私钥(Private Key)
私钥文件叫 id_ed25519,作用是证明“你就是你”。它只保存在自己的电脑里,例如 macOS 的 /Users/username/.ssh/id_ed25519,Windows 的 C:\Users\username\.ssh\id_ed25519。
私钥绝对不能上传到服务器,不能发送给任何人,也不能提交到 GitHub 仓库。谁拿到你的私钥,谁就能登录你的服务器。
公钥(Public Key)
公钥文件叫 id_ed25519.pub,内容是一行以 ssh-ed25519 开头的字符串,例如:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAxxxx user@computer公钥可以安全地上传到 VPS,服务器会把它保存到对应用户目录下的 ~/.ssh/authorized_keys 文件里。登录时服务器用这把公钥验证你的签名。
为什么推荐 Ed25519?
创建 SSH Key 时常见算法有三种:RSA、ECDSA、Ed25519。其中 RSA 历史最久、兼容性最广,ECDSA 依赖系统随机数质量,曾出现过侧信道风险。目前新建密钥推荐直接用 Ed25519,它密钥更短、速度更快、安全性也更高,而且现代 OpenSSH 都支持。
| 对比项 | RSA | Ed25519 |
|---|---|---|
| 密钥长度 | 较长(默认 3072 位起) | 很短(256 位) |
| 安全性 | 高 | 更高,基于更成熟的现代曲线 |
| 签名性能 | 较慢 | 更快 |
| 文件大小 | 大 | 小 |
| 推荐程度 | 一般,主要用于兼容老系统 | 推荐,新建密钥首选 |
所以本文后面创建密钥统一使用 ssh-keygen -t ed25519 命令。如果你只需要连接一些很老的服务或设备,再单独考虑 RSA。
macOS 创建 SSH Key
macOS 自带 OpenSSH,不需要安装任何额外软件,打开终端就能直接生成密钥。
第一步:打开 Terminal
打开 Launchpad,进入 Other 文件夹,点击 Terminal。更快的方式是按 Command + Space 打开聚焦搜索,输入 Terminal 回车。
第二步:生成 SSH Key
在终端输入下面的命令并回车:
ssh-keygen -t ed25519系统会提示保存位置:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/你的用户名/.ssh/id_ed25519):默认路径就是 /Users/你的用户名/.ssh/id_ed25519,直接按 Enter 使用默认值即可。
第三步:设置 Passphrase
接着终端会提示 Enter passphrase (empty for no passphrase):,要求输入一个密码,并再次输入确认。
这个 Passphrase 不是 VPS 密码,也不是 macOS 登录密码,它是保护你电脑里私钥文件的密码。即使 id_ed25519 文件被别人复制走,没有 Passphrase 也无法使用。第一次配置建议设置一个,输入两遍相同的密码,然后回车完成。
第四步:确认生成的文件
进入 SSH 文件夹查看:
cd ~/.ssh
ls应该能看到两个文件:id_ed25519(私钥)和 id_ed25519.pub(公钥)。
第五步:复制公钥
执行下面的命令,终端会打印出公钥内容:
cat ~/.ssh/id_ed25519.pub输出类似 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBxxxxx username@MacBook,选中整行复制。之后到 VPS 控制台的 SSH Keys 页面,点 Add SSH Key,把公钥粘贴进去保存。
Linux 创建 SSH Key
Linux(Ubuntu、Debian、CentOS 等发行版)流程与 macOS 基本一致,只是默认路径变成了 /home/username/.ssh/id_ed25519。
第一步:生成密钥
打开终端执行:
ssh-keygen -t ed25519第二步:确认保存位置
提示保存路径时直接按 Enter,使用默认的 /home/username/.ssh/id_ed25519。
第三步:设置 Passphrase
终端提示 Enter passphrase 时,输入一个用于保护私钥的密码并再次确认。同一个提示出现两次,两次输入一致即可。
第四步:查看公钥
执行下面的命令并复制输出内容:
cat ~/.ssh/id_ed25519.pub此时 ~/.ssh/ 目录下应该有两个文件:id_ed25519 是私钥,id_ed25519.pub 是公钥。
Windows 创建 SSH Key
Windows 过去通常要装 PuTTY 这类工具,但 Windows 10 和 Windows 11 已经内置了 OpenSSH,推荐直接使用 PowerShell,一行命令都不用额外安装。
第一步:打开 PowerShell
在开始菜单搜索 PowerShell,打开即可。
第二步:生成 SSH Key
在 PowerShell 里输入:
ssh-keygen -t ed25519第三步:确认保存位置
提示 Enter file in which to save the key 时直接按 Enter,使用默认路径 C:\Users\你的用户名\.ssh\id_ed25519。
第四步:设置 Passphrase
按提示输入保护私钥的密码,再输入一次确认。
第五步:确认生成的文件
打开文件资源管理器,进入 C:\Users\你的用户名\.ssh\,可以看到 id_ed25519 和 id_ed25519.pub 两个文件。
第六步:复制公钥
回到 PowerShell 执行:
type $env:USERPROFILE\.ssh\id_ed25519.pub复制输出的一整行公钥内容,下一步会用到。
把 SSH Key 添加到 VPS
无论你用的是 Hostinger、阿里云、腾讯云还是 AWS,控制台添加 SSH Key 的流程基本一样:进入 VPS 控制台,找到 SSH Keys 入口,点 Add SSH Key,填写名称并粘贴公钥,保存即可。
常见错误 Warning
粘贴到服务器控制台的一定是 id_ed25519.pub 里的公钥内容,绝不能把 id_ed25519 私钥文件传上去。私钥一旦上传或外泄,服务器安全就等于失效了。
各家面板的填写项大同小异,例如名称填 My MacBook SSH Key,公钥框粘贴以 ssh-ed25519 开头的整行内容。保存后,服务器会把公钥写入对应用户的 ~/.ssh/authorized_keys,例如 root 用户就是 /root/.ssh/authorized_keys。部分平台在创建 VPS 实例时也支持直接勾选已有 SSH Key,新机器创建完就能免密登录。
第一次 SSH 登录测试
公钥配置好后,用用户名加服务器 IP 测试登录:
ssh root@123.123.123.123把 root 换成你的实际用户名,123.123.123.123 换成服务器公网 IP。第一次连接时终端会提示确认服务器指纹:
Are you sure you want to continue connecting (yes/no)?输入 yes 回车。如果你创建密钥时设置了 Passphrase,这里会出现 Enter passphrase for key:,输入创建 SSH Key 时设置的密码即可登录。看到服务器的命令行提示符,说明 SSH 密钥登录已经生效。
配置 SSH Agent,避免重复输入密码
设置了 Passphrase 后,每次 SSH 登录都要重新输入一遍,比较麻烦。启用 SSH Agent 可以把私钥加载到内存里,本次会话内不再重复询问。
macOS 添加私钥并写入钥匙串:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519再编辑 ~/.ssh/config,加入下面的配置:
Host *
AddKeysToAgent yes
UseKeychain yes之后 macOS 会自动把密钥加入 Agent 并保存在钥匙串里。
Linux 先启动 ssh-agent 再添加私钥:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519Windows 在 PowerShell 里把 ssh-agent 服务设为自动启动并开启,然后添加私钥:
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519设置 SSH 登录别名
当你同时管理多台 VPS,比如腾讯云服务器、阿里云 ECS、Hostinger VPS、AWS EC2,每次都敲 ssh root@123.123.123.123 不仅麻烦,还容易输错 IP。SSH 的配置文件 ~/.ssh/config 可以给每台服务器设置一个简短别名,之后输入 ssh my-vps 就能登录。
macOS / Linux 设置 SSH Alias
配置文件是 ~/.ssh/config,不存在就先创建,然后用 nano 打开:
touch ~/.ssh/config
nano ~/.ssh/config在文件里添加一台服务器的配置:
Host my-vps
HostName 123.123.123.123
User root
IdentityFile ~/.ssh/id_ed25519保存退出(nano 里按 Control + O 保存,Control + X 退出)。以后输入 ssh my-vps,等同于执行 ssh root@123.123.123.123 -i ~/.ssh/id_ed25519。
Windows 设置 SSH Alias
Windows 的配置文件在 C:\Users\你的用户名\.ssh\config,注意这个文件没有扩展名。不存在就新建一个名为 config 的文件,内容与 macOS / Linux 完全一样:
Host my-vps
HostName 123.123.123.123
User root
IdentityFile ~/.ssh/id_ed25519保存后在 PowerShell 里直接输入 ssh my-vps 即可连接。
多服务器管理示例
假设你要管理三台 VPS,在 ~/.ssh/config 里按下面的格式配置,每个 Host 块对应一台服务器:
Host hostinger-vps
HostName 1.2.3.4
User root
IdentityFile ~/.ssh/id_ed25519
Host aliyun-vps
HostName 5.6.7.8
User root
IdentityFile ~/.ssh/id_ed25519
Host tencent-vps
HostName 9.10.11.12
User root
IdentityFile ~/.ssh/id_ed25519之后连接 Hostinger 输 ssh hostinger-vps,连接阿里云输 ssh aliyun-vps,连接腾讯云输 ssh tencent-vps,不用再记 IP 和用户名。
常见问题
1. SSH Key 的密码是服务器密码吗?
不是。SSH Key 的 Passphrase 保护的是你电脑里的私钥文件,服务器密码则是登录 VPS 用户用的密码,两者完全不同。Passphrase 忘记后无法找回,只能重新生成一对密钥并重新配置服务器。
2. 可以把私钥上传到 VPS 吗?
绝对不要。上传的应该是 id_ed25519.pub 公钥;id_ed25519 私钥只留在本地电脑。私钥泄露等于把服务器钥匙交给别人。
3. 删除本地 SSH Key 会影响服务器吗?
不会影响服务器本身,只会让你这台电脑无法再登录。只有删除服务器上的 authorized_keys 里的对应公钥,服务器才会拒绝这把密钥登录。
推荐实践方案
个人使用的 VPS 推荐完整组合:Ed25519 算法加 Passphrase,再配合 SSH Agent 保存和 SSH Alias 管理,安全性和使用体验都最好。Passphrase 保护私钥文件,Agent 让你免去重复输入,Alias 让多服务器连接变得简单。
自动化部署场景则不同。GitHub Actions、CI/CD、AI Agent、Codex、Claude Code 这类程序需要在无人值守时自动连接服务器,无法每次交互式输入 Passphrase,通常采用 Ed25519 加无 Passphrase 的密钥,并通过限制密钥用途、只授权必要用户和命令来降低风险。自动化密钥建议单独生成,不要和日常登录共用同一把。
Key Takeaway 核心结论
个人使用:Ed25519 + Passphrase + SSH Agent + SSH Alias。自动化部署:Ed25519 + 无 Passphrase + 最小权限,两类场景的密钥分开管理。
总结
创建 SSH 登录密钥并配置 VPS,完整流程是下面五步:电脑上生成密钥对,复制公钥内容,把公钥上传到 VPS 的 authorized_keys,配置 SSH Agent 避免重复输入密码,最后设置 SSH Alias,用 ssh my-vps 一条命令登录。
SSH Key 配置完整流程
生成密钥
ssh-keygen -t ed25519
复制公钥
cat ~/.ssh/id_ed25519.pub
上传到 VPS
authorized_keys 保存公钥
配置 SSH Agent
ssh-add 记住私钥,免输密码
设置 SSH Alias
~/.ssh/config 配别名,ssh my-vps
macOS、Linux、Windows 的操作界面不同,但底层用的都是同一个 OpenSSH 标准。掌握这一套流程后,几乎所有云服务器都能用 SSH Key 安全登录,并通过 SSH 别名快速管理多台 VPS。
每周四送达。
主机评测、建站对比、性能优化技巧和插件推荐 — 每周为 WordPress 站长和建站者精选。
