Oracle Cloud甲骨文云服务器:SSH 密钥丢失?在已登录状态下快速添加新 Key 教程
很多小伙伴在使用甲骨文云(Oracle Cloud)时,可能会遇到以下尴尬的情况:
- 最初下载的
.key密钥文件不小心删除了。 - 密钥保存在 FinalShell、Termius 等软件里,但软件本身不支持导出私钥。
- 需要在手机端或其他电脑上紧急登录服务器。
前提条件: 你当前还有一个已经登录且可用的终端(如 FinalShell、Web 控制台或已授权的旧设备)。
核心原理
SSH 登录就像“锁”与“钥匙”的关系。服务器上保存的是“锁芯”(公钥 authorized_keys),你手里拿的是“钥匙”(私钥)。既然我们现在能进门,只需要在服务器上再换一把锁(或者加一把锁),然后把对应的钥匙拿走即可。
[ 本地设备 A ] [ 本地设备 B ]
(FinalShell 已登录) (新设备/手机端)
| |
| 执行生成新 Key |
| 写入授权名单 |
|--------------------->|
| (复制私钥) | 使用新私钥登录
v v
+------------------------------+
| Oracle Cloud 服务器 |
| ~/.ssh/authorized_keys |
| [ 旧 Key 公钥 ] (保留) |
| [ 新 Key 公钥 ] (新增) |
+------------------------------+
操作步骤
第一步:在服务器上生成新密钥对
在已登录的终端中,输入以下命令:
Bash
ssh-keygen -t rsa -b 4096 -f ~/new_oracle_key
- 提示设置密码 (Passphrase):建议直接连续按 回车 跳过。
- 此操作会在当前目录下生成两个文件:
new_oracle_key:你的私钥(绝对不能给别人)。new_oracle_key.pub:你的公钥。
第二步:安装新公钥(授权)
我们需要把新生成的公钥内容,添加到系统的“允许登录名单”中:
Bash
# 使用追加模式(>>),确保不影响旧钥匙 cat ~/new_oracle_key.pub >> ~/.ssh/authorized_keys # 修复文件权限(关键:权限不对会导致登录失败) chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
第三步:提取私钥并保存到本地
由于我们需要把“钥匙”带走,最简单的办法是直接打印出内容并复制:
- 运行:
cat ~/new_oracle_key - 完整复制 屏幕上显示的内容,包括开头的
-----BEGIN ...和结尾的-----END ...。 - 在你的本地电脑新建一个记事本,粘贴内容,保存为
oracle.pem或oracle.key。
常见问题 QA
Q1:添加新 Key 后,旧的还能用吗?
能用。 因为我们使用了 >> 追加命令,新旧公钥会并排保存在服务器的名单里。只要你不手动删除 ~/.ssh/authorized_keys 里的旧内容,它们可以同时生效。
Q2:新钥匙登录报错“Permissions are too open”?
如果你是在 Linux 或 Mac 本地使用这把新钥匙,需要先给你的本地 .key 文件降权: chmod 400 oracle.key 即可。
Q3:确认新钥匙能用了,服务器上的残留文件要删吗?
必须删。 出于安全考虑,一旦你把私钥内容复制到本地并确认能登录后,请务必删除服务器上的生成文件: rm ~/new_oracle_key ~/new_oracle_key.pub
💡 最佳实践建议
与其反复在服务器上生成密钥,不如在你自己的常用设备上生成密钥对。
- 在本地电脑运行
ssh-keygen。 - 复制本地的
id_rsa.pub内容。 - 将其粘贴到服务器的
~/.ssh/authorized_keys。
这样,你的设备就拥有了“永久通行证”,再也不用担心从甲骨文导出的密钥丢了!
温馨提示:在确保新客户端能够成功登录之前,千万不要关闭当前的登录窗口!先双开确认,再安心退出。
评论