# 建立、儲存和刪除 SSH 金鑰

產生或匯入 SSH 金鑰時私鑰僅顯示一次的規則、儲存方法，以及刪除金鑰前需要確認的實際影響範圍。

在「計算 > SSH 金鑰」頁面可以新建、重新命名和刪除 SSH 金鑰，供登入實例和建立實例時選用。新建金鑰有兩種模式：讓控制台自動生成一組金鑰對，或者匯入一個你已經持有的公鑰。

**只有「自動生成」模式會產生私鑰，而這把私鑰只在生成的那一刻顯示一次。** 關閉彈窗之後，控制台和 API 都沒有任何入口能再把它找回來——不是「藏起來了」，是徹底沒有檢視渠道了。點擊「建立」之前，先想好私鑰要存到哪裡：密碼管理器、加密的本機檔案，或者其他你信得過的地方。

_介面示意圖：SSH 金鑰列表頁：名稱、演算法、指紋列，右上角新建金鑰按鈕，每行的重新命名和刪除操作_

## 開始之前

- **權限**：你的角色需要包含 SSH 金鑰管理權限。
- **儲存私鑰的地方**：如果打算用「自動生成」模式，提前準備好密碼管理器或其他安全儲存位置——私鑰生成之後沒有回頭路。
- **一份已有公鑰**（選填）：如果打算匯入而不是生成，準備好 OpenSSH 格式的公鑰文字（`authorized_keys` 裡的單行格式）。

## 生成新金鑰

1. 在「計算 > SSH 金鑰」頁面，點擊**新建金鑰**。
2. 在彈窗的名稱欄位中確認或修改金鑰名稱。控制台已經填入一個預設名稱，格式類似 `ssh-key-20260829-1234`。
3. 模式選擇器保持在**自動生成**（預設選中）。
4. 點擊**建立**。控制台會當場生成一組 Ed25519 金鑰對，彈窗隨即切換為「儲存你的私鑰」頁面，並顯示警告：「私鑰僅在此展示一次，關閉後將無法再次檢視，請立即儲存。」

_介面示意圖：新建 SSH 金鑰彈窗（表單階段）：名稱欄位、自動生成/匯入已有公鑰切換按鈕、建立按鈕_

到這一步私鑰已經生成，只是視窗還沒關。剩下的步驟決定你還能不能再看到它。

5. 點擊**下載私鑰**，把私鑰儲存為檔案；或者點擊公鑰、私鑰文字框旁的複製按鈕，把內容貼進密碼管理器。
6. 勾選**我已儲存好私鑰**。這個核取方塊控制著下一步按鈕是否可以點擊。
7. 點擊**完成**。

_介面示意圖：儲存私鑰彈窗（展示階段）：警告文案、公鑰和私鑰文字框及各自的複製按鈕、下載私鑰按鈕、「我已儲存好私鑰」核取方塊、完成按鈕_

這個彈窗不能靠點擊遮罩或按 Esc 關閉，唯一出口是勾選確認後點擊「完成」。這不是控制台的缺陷——私鑰只有這一次展示機會，平台沒有留一個能被手滑點掉的意外出口。

## 關閉彈窗之後，私鑰去哪了

「關閉後無法再次檢視」說的是你這一側，容易被理解成私鑰已經從系統裡徹底清除。實際情況要分開看：

| 會發生什麼                                                                                                                                                  | 不會發生什麼                                                                       |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| 關閉彈窗後，控制台和 API 都沒有任何入口能再把私鑰明文取回                                                                                                   | 私鑰不會真的從系統裡刪除——伺服端會以加密形式保留一份副本                           |
| 這份加密副本會被「網頁控制台自動登入」功能持續複用：開啟 [Web SSH](/zh-tw/compute/access/web-ssh/) 面板時，控制台按公鑰指紋比對並解密這份副本，用於免密登入 | 這份副本不會經任何介面回傳給你或其他任何人——它只在伺服端內部使用，從不出現在回應裡 |
| 唯一能清除伺服端這份副本的方法是刪除這把 SSH 金鑰                                                                                                           | 關閉彈窗這個動作本身不會觸發伺服端做任何清理，副本是否還留著和你有沒有關掉彈窗無關 |

如果你需要的不只是「我這邊看不到了」，而是「伺服器上也不再留底」，刪除對應的 SSH 金鑰是唯一途徑，見下文。

## 匯入已有公鑰

如果本機已經有一組 SSH 金鑰，匯入公鑰不會經過私鑰展示這一步——私鑰全程留在你自己手裡，伺服端從未生成也沒有持有它。

1. 在「計算 > SSH 金鑰」頁面，點擊**新建金鑰**。
2. 在彈窗的名稱欄位中確認或修改金鑰名稱。
3. 將模式選擇器切換到**匯入已有公鑰**。
4. 在公鑰文字框中貼上 OpenSSH 格式的公鑰（`authorized_keys` 裡的單行格式）。
5. 點擊**建立**。

匯入模式的建立回應裡不包含私鑰欄位，這條規則和「自動生成」模式的一次性展示是兩回事，不要混著理解。

## 重新命名 SSH 金鑰

名稱只是一個便於識別的標籤，重新命名不影響金鑰本身，也不影響已經在用這把金鑰的實例。名稱不能留空；提交空名稱時，控制台會提示：「名稱不能為空」。

## 刪除 SSH 金鑰

> [!CAUTION]
> 刪除只影響「今後能不能用它建立新實例」，不影響已經在用這把金鑰登入的實例。已經把對應公鑰寫進
> `authorized_keys` 的實例不會因為你刪除了這把 SSH
> 金鑰記錄而失去存取權限——這條經常被理解反。

1. 在「計算 > SSH 金鑰」列表中，找到目標金鑰所在行，點擊**刪除**。
2. 確認框標題為「刪除 SSH 金鑰」，正文寫明：「確定要刪除金鑰「`{{name}}`」嗎？此操作不可撤銷，已使用該金鑰登入的實例不受影響，但今後無法再用它建立新實例。」
3. 點擊**刪除**確認。

_介面示意圖：刪除 SSH 金鑰確認框：標題、包含金鑰名稱的確認文案、刪除按鈕_

| 會發生什麼                                                     | 不會發生什麼                                                     |
| -------------------------------------------------------------- | ---------------------------------------------------------------- |
| 這把金鑰從「建立實例時可選的 SSH 金鑰」列表中消失              | 已經把對應公鑰寫入 `authorized_keys` 的實例不會失去存取權限      |
| 如果這把金鑰是自動生成的，伺服端保存的加密私鑰副本會被一併清除 | 控制台不會提示你先檢查有哪些實例在用這把金鑰——刪除前需要自己確認 |

## 建立失敗時

名稱留空，或者選擇「匯入已有公鑰」模式但公鑰欄位留空，提交都會失敗，控制台提示：「建立失敗，請檢查填寫內容」。檢查名稱和公鑰欄位後重新提交。

> [!NOTE]
> 兩步驟驗證恢復碼的可檢視規則和本頁描述的 SSH 私鑰不一樣，不要套用同一套假設。具體規則屬於另一篇文件的範圍，記錄在 account/two-step-verification 頁，目前尚未撰寫。

## 相關文件

- [實例存取](/zh-tw/compute/access/)
- [使用 Web SSH](/zh-tw/compute/access/web-ssh/)
- [建立實例](/zh-tw/compute/instances/create/)
