1. 先理解公钥和私钥分别放哪里#
公钥可以放到服务器的 authorized_keys;私钥留在自己的电脑,并用口令保护。每台电脑单独生成密钥,丢失设备时就能撤销对应公钥,不需要让所有设备共用同一份私钥。
开始前确认现有密码或密钥登录正常,并打开服务商网页控制台。保留当前连接,整个过程用第二个终端验证。

2. 在本机生成 Ed25519 密钥#
以下命令在自己的电脑运行。若默认路径已经有密钥,换一个文件名,不能直接覆盖。
ssh-keygen -t ed25519 -f ~/.ssh/vps_ed25519 -C 'my-laptop'按提示设置私钥口令。生成的 vps_ed25519.pub 是公钥,vps_ed25519 是私钥。Windows PowerShell 同样可使用 OpenSSH 工具;目录写法按本机路径调整。
3. 将公钥添加给实际登录用户#
有 ssh-copy-id 的电脑可执行下列命令,端口和用户名按实际替换。它通过现有登录方式把公钥加入对应用户,不会替你创建系统账户。
ssh-copy-id -i ~/.ssh/vps_ed25519.pub -p 22 deploy@203.0.113.10没有该工具时,先通过现有方式登录,在目标用户家目录创建 .ssh,把 .pub 文件的一整行追加到 authorized_keys。不要覆盖已有其他设备的公钥;目录权限通常为 700,文件为 600,所有者必须是该用户。
如果使用 KiwiVM 的 Public SSH Keys 功能,先读面板对作用时机的说明:管理公钥列表、给当前系统注入公钥、重装时使用公钥可能是不同操作,保存列表后仍要实测登录。
4. 用第二个窗口确认密钥真的生效#
ssh -i ~/.ssh/vps_ed25519 -o IdentitiesOnly=yes -p 22 deploy@203.0.113.10私钥口令提示与服务器账户密码提示不同。可加 -v 确认使用的是 publickey 认证。登录后执行 sudo -v,验证新用户有需要的管理权限,再进行下一步。
5. 需要禁用密码时,先检查有效配置#
在服务器备份 SSH 配置,检查主配置和 sshd_config.d 中的片段。常用目标是 PubkeyAuthentication yes、PasswordAuthentication no;若要完全关闭交互式密码认证,还需结合 PAM 与 KbdInteractiveAuthentication 的实际设置。不要在不理解 MFA 配置时一并禁用它。
sudo sshd -t
sudo sshd -T | grep -E 'pubkeyauthentication|passwordauthentication|kbdinteractiveauthentication|permitrootlogin'语法检查无输出且退出成功后,按系统实际服务名 reload SSH。Ubuntu 常见 ssh,其他系统可能是 sshd;启用 socket activation 的系统还要按发行版说明处理。再次新开连接验证后,才关闭旧窗口。
6. 改端口与撤销密钥分别操作#
改 SSH 端口只会减少一部分扫描噪声,不能代替密钥和更新。先放行新端口、修改配置、检查语法,再验证新端口,最后撤销旧规则。不要同时改登录账户和防火墙。
设备丢失时,从对应用户的 authorized_keys 中删除那一条公钥,再核对其他密钥仍可用。私钥泄露则生成新密钥并撤销旧密钥;仅修改私钥口令不能让已经外泄的副本失效。更多见账户安全。
完成后检查
端口变化不能代替密钥和更新。每次调整都要能通过另一条已验证的途径恢复。