欢迎访问易策 · ZeroToOne,从0到1的成长与探索!

Oracle Cloud甲骨文云服务器:SSH 密钥丢失?在已登录状态下快速添加新 Key 教程

很多小伙伴在使用甲骨文云(Oracle Cloud)时,可能会遇到以下尴尬的情况:

  1. 最初下载的 .key 密钥文件不小心删除了。
  2. 密钥保存在 FinalShell、Termius 等软件里,但软件本身不支持导出私钥。
  3. 需要在手机端或其他电脑上紧急登录服务器。

前提条件: 你当前还有一个已经登录且可用的终端(如 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

第三步:提取私钥并保存到本地

由于我们需要把“钥匙”带走,最简单的办法是直接打印出内容并复制:

  1. 运行:cat ~/new_oracle_key
  2. 完整复制 屏幕上显示的内容,包括开头的 -----BEGIN ... 和结尾的 -----END ...
  3. 在你的本地电脑新建一个记事本,粘贴内容,保存为 oracle.pemoracle.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

💡 最佳实践建议

与其反复在服务器上生成密钥,不如在你自己的常用设备上生成密钥对

  1. 在本地电脑运行 ssh-keygen
  2. 复制本地的 id_rsa.pub 内容。
  3. 将其粘贴到服务器的 ~/.ssh/authorized_keys

这样,你的设备就拥有了“永久通行证”,再也不用担心从甲骨文导出的密钥丢了!

温馨提示:在确保新客户端能够成功登录之前,千万不要关闭当前的登录窗口!先双开确认,再安心退出。

评论