很多读者在 DMIT 控制台添加了新的 SSH 密钥,重新连接时却依然提示拒绝访问。核心原因在于:在控制台密钥库添加新公钥,并不代表实例已经自动使用了该密钥;将密钥绑定到实例后,还必须从实例控制面板重启一次,配置才会真正生效。
遇到换密钥连不上的情况,千万不要轻信“重装系统解决”。重装不仅耗费时间,还会抹掉已有业务数据。只要实例本身正常运行,按照正确的流程在后台重新绑定并重启即可恢复连接。
本文适用于通过 DMIT 控制台管理的 Linux 实例。若你此前在系统内部自行修改过 SSH 默认端口(如将 22 改为其他自定义端口)或禁用了 root 登录,在执行后续连接步骤时,请对应使用你自己的端口与登录用户名。
步骤一:在 Services 密钥库添加或生成公钥#
在将新密钥部署到机器之前,需要确保 DMIT 账号的密钥库中已存在对应的公钥记录。
登录 DMIT 控制台,在导航栏中找到 Services,点击进入 SSH Keys(参考 DMIT SSH key library 文档)。此处提供两种准备密钥的方式:
- 添加本地已有公钥:点击 Add Key,在公钥输入框中粘贴本地的 OpenSSH 公钥内容(通常以
ssh-ed25519或ssh-rsa开头),为密钥填写一个便于识别的名称,最后点击 Add SSH Key 保存。切记不要将本地私钥粘贴进公钥框。自行上传公钥的用户必须妥善保管本地对应的私钥,平台无法找回用户本地遗失的私钥。 - 在面板直接生成新密钥:点击 Generate New Key,系统默认推荐生成高安全性的 Ed25519 密钥。生成后,浏览器会自动下载包含密钥文件的压缩包。请立即将压缩包存放到安全目录中。解压后会看到三种格式的文件:
.pem:OpenSSH 格式私钥,适用于 Linux、macOS 终端以及支持该格式的客户端。.pub:对应的 SSH 公钥文件。.ppk:PuTTY 格式私钥,专供 Windows 下的 PuTTY 或部分传统客户端使用。 下载保存好密钥文件后,为生成的密钥命名,并点击 Add SSH Key 将公钥正式保存到密钥库中。
步骤二:在实例 Access 页面绑定新密钥#
公钥进入密钥库后,需要明确指定由哪台服务器使用这把密钥。
- 返回控制台首页或产品列表,找到并点击进入需要更换密钥的目标实例。
- 在实例管理界面找到 Access 分页(参考 DMIT apply SSH keys 文档)。
- 点击 Change Key 选项。
- 在密钥列表中选择刚刚添加或生成的新密钥。
- 点击 Save to Instance 确认绑定。
步骤三:从控制面板重启实例使配置生效#
这是许多用户最容易忽略的关键一步:在面板点击保存后,实例并不会即时热更新密钥配置。官方规则明确要求,必须通过 DMIT 实例控制面板执行重启,新公钥才会写入实例环境。在系统内部通过终端运行 reboot 命令无法触发该同步流程。
点击 Save to Instance 后,页面会提示重启选项:
- 立即确认重启:勾选 Agree to mandatory Shutdown 并点击 Confirm,控制面板会向实例下发关机重启指令。
- 稍后手动重启:如果你当前有正在运行的前台任务,可以选择稍后重启。官方文档明确指出,在面板重启完成之前,原有的旧密钥依然保持有效,你仍可使用旧密钥连接维护。
操作建议:在确认强制重启前,请务必在终端内保存正在编辑的代码或文档,正常关闭或暂停写入型数据库事务,并做好必要的数据备份。实例重启过程中已有的 SSH 会话会直接断开,重启后需要使用新私钥建立新连接。
步骤四:用新私钥连接验证与善后清理#
等待控制面板显示实例重新处于运行状态(Running)后,即可在本地客户端使用新私钥尝试连接。
macOS 与 Linux 终端操作: 首先将下载或导出的私钥文件权限收紧为仅当前用户可读,然后发起连接:
chmod 600 ~/Downloads/dmit-new.pem
ssh -i ~/Downloads/dmit-new.pem -p 22 [email protected]注意:请将示例中的 ~/Downloads/dmit-new.pem 替换为你本地私钥的实际绝对路径,将 203.0.113.10 替换为你的 DMIT 实例真实公网 IP。若你自行调整过 SSH 端口或禁用过 root 登录,请相应替换端口与登录用户名。
Windows 用户:
无需在命令行执行 chmod 命令。请打开图形化 SSH 工具(如 PuTTY、Termius 或 Xshell),在认证设置(Authentication / Key)中导入 .ppk 或 .pem 私钥文件即可。切勿将 .pub 公钥误当作私钥配置在客户端中。
首次连接新端口或新实例时,如果终端弹出主机公钥指纹确认提示,核对无误后输入 yes 继续。更换用于身份验证的用户登录私钥,并不会导致服务器本身的主机指纹发生变更。
验证成功后的清理建议:
确认新私钥能顺畅登录后,应妥善归档并安全删除本地存放的废弃旧私钥,避免后续脚本调用混淆。需要注意,控制台的 Change Key 流程只负责将新公钥部署至实例,并不保证会自动清空你此前在系统内部手动写入 ~/.ssh/authorized_keys 的所有历史公钥。如有安全清理需求,可在登录后自行检查该文件。同时,记得同步更新依赖该主机的自动化部署脚本或备份任务中的私钥路径。
步骤五:典型报错排查与控制台应急救援#
如果更换密钥后依然无法登录,可以对照以下常见现象快速定位原因:
| 常见报错 / 故障现象 | 核心可能原因 | 推荐排查与处理动作 |
|---|---|---|
Permission denied (publickey) | 密钥未正确匹配或配置未生效 | 检查本地连接命令指定的私钥是否与后台绑定的公钥配对;确认用户名是否为 root(或自定义用户);确认是否已在 DMIT 控制面板完成重启。 |
连接超时 (Connection timed out) | 网络阻断或实例未完成启动 | 登录控制台查看实例运行状态;核对服务器 IP 与 SSH 端口是否正确;检查本地网络与本地防火墙设置。 |
| 本地私钥报错 / 权限过宽 | 路径错误或权限未收敛 | 确认本地私钥文件路径无误;macOS/Linux 重新执行 chmod 600 <私钥路径>;Windows 用户在客户端重新指定私钥文件。 |
网页控制台应急登录: DMIT 镜像默认禁用了远程 root 密码登录。如果你丢失了可用私钥导致完全无法通过 SSH 连入机器,可以进行紧急自救:
- 在实例管理界面进入 Access,点击 Change Password 为 root 设置一个新密码。
- 点击实例管理页面顶部的 Console 按钮,打开网页控制台(参考 DMIT instance FAQ 文档)。
- 在网页控制台输入
root及刚才设置的密码进行登录。
说明:在 Access 中设置 root 密码主要用于通过网页控制台进行应急维护,并不等于自动开启了远程 SSH 的密码验证。进入系统后,你可以手动检查修复 ~/.ssh/authorized_keys 文件或 SSH 配置文件。
工单反馈注意事项: 若尝试上述步骤后依然存在平台层面的连接异常,可以向 DMIT 客服提交工单。提交工单时,请提供实例编号、报错发生的精确时间点以及完整的终端错误文本,千万不要在工单中上传或粘贴你的私钥内容。
关于服务器日常连接与防护的更多细节,欢迎阅读我们的 第一次SSH登录 与 SSH密钥与安全设置 教程。如果你正在为新项目挑选稳定机房,可以参考 DMIT选购指南,实时库存与网络规格可查看 DMIT当前套餐,或直接访问 DMIT 官方网站 查看最新动态。
更新记录:2026-10-24 根据 DMIT 官方文档整理最新密钥绑定与面板重启流程,补充常见报错对照与排查指引。