開發者指南
5分鐘

如何安全地與團隊共享 SSH 金鑰和憑證

SSH 金鑰等同伺服器的完整存取權。了解為什麼用 Slack 或 Email 傳金鑰很危險,以及如何用設有到期時間的秘密備忘錄,安全地一次性交付金鑰。

LOCK.PUB
如何安全地與團隊共享 SSH 金鑰和憑證

如何安全地與團隊共享 SSH 金鑰和憑證

「SSH 金鑰直接用 Slack 傳給我就好。」每個開發團隊都聽過這句話。伺服器存取刻不容緩、新成員要設定開發環境、再過幾分鐘就要部署,偏偏有人手上沒有金鑰。

但就是這麼一句請求,可能成為一起嚴重資安事故的開端。

為什麼共享 SSH 金鑰特別危險

SSH 金鑰和一般密碼不一樣,它給的是整台伺服器的完整存取權。

比較項目 密碼 SSH 金鑰
權限範圍 特定帳號 整台伺服器
外洩時的影響 僅限該帳號 伺服器上的所有資料
更換難易度 可立即變更 重新產生金鑰並更新所有伺服器
雙重驗證 可使用 金鑰本身就是驗證

SSH 金鑰一旦外洩,伺服器上的每個檔案、每個資料庫、每一行程式碼都會曝光。這和單一密碼外洩有本質上的差別。

團隊何時需要共享 SSH 金鑰

現實中,確實有正當的共享理由。

  • 共用伺服器存取:全隊都需要存取的測試(Staging)或正式環境伺服器
  • 部署金鑰:CI/CD 流水線使用的金鑰
  • SSL 憑證:負責人異動時的憑證更新
  • API 密鑰:串接第三方服務的驗證資訊
  • 資料庫帳密:緊急事故處理

危險的共享方式

1. Slack 或 Discord 私訊

這兩項服務都沒有使用端對端加密,聊天紀錄預設會在伺服器上保存很長一段時間。對話中的任何人只要搜尋「ssh」或「key」,就能翻出之前分享過的金鑰。員工離職時帳號可以停用,但他們收發過的金鑰仍會留在工作區的紀錄中。

2. Email

郵件會永久封存在郵件伺服器上,一旦被轉寄就再也控制不了。只要郵件伺服器被入侵一次,所有寄出過的金鑰都會曝光。

3. 共用的 Google 雲端硬碟或 Notion

很難做到細緻的權限控管。檔案同步之後,本機副本會留在各個裝置上。有人離開團隊時,要收回所有副本幾乎不可能。

4. 提交到 Git 儲存庫

這是最危險的做法。金鑰會永遠留在 Git 歷史中,就算刪掉檔案,也能從歷史紀錄中還原。如果儲存庫是公開的,金鑰就等於暴露在全世界面前。

安全的共享方式

方法 1:LOCK.PUB 秘密備忘錄(最適合一次性交付)

需要交付金鑰一次時,這是最實際的做法。

1. 在 LOCK.PUB 建立秘密備忘錄
2. 貼上 SSH 金鑰或憑證內容
3. 設定一組強密碼
4. 把到期時間(Pro)設得越短越好(1~4 小時)
5. 連結用 Slack 傳,密碼用電話告知
6. 對方把金鑰存到本機後,連結就到期

優點:

  • 金鑰不會以明文存放在任何持久性的伺服器上
  • 到期後連結就無法再開啟
  • 聊天紀錄裡不會留下金鑰的明文

方法 2:密鑰管理服務(適合較大的團隊)

使用 HashiCorp Vault、AWS Secrets Manager 或 Google Secret Manager 等專用工具。

  • 內建權限控管與稽核紀錄
  • 可以自動輪換金鑰(Vault 和 AWS 內建此功能;Google Secret Manager 只會發送輪換通知,輪換本身需要自行建置)
  • 缺點是成本和設定複雜度較高

方法 3:SSH 憑證授權中心(長期解法)

不再共用金鑰,而是架設 SSH CA,為每位使用者簽發個別憑證。

  • 從根本上免除共享金鑰的需要
  • 可以針對個人管理存取權
  • 初期建置成本較高

方法 4:每人一把金鑰(最推薦)

只要可行,就為每個人簽發個別金鑰,而不是全隊共用同一把。

原則:共用金鑰 < 個人金鑰
共用金鑰外洩 → 波及整個團隊
個人金鑰外洩 → 只影響該使用者

不得不共享時的檢查清單

如果無法採用個人金鑰、非共享不可,請照著這份清單做。

交付前

  • 金鑰的權限範圍是否已設到最小?
  • 唯讀金鑰是否就夠用?
  • 能不能加上 IP 限制?

交付時

  • 金鑰和密碼是否透過不同管道傳送?
  • 到期時間是否已設到實務上最短?
  • 對方確認收到後,傳送者能否刪除原始檔?

交付後

  • 確認對方已安全保存金鑰
  • 確認分享的連結或備忘錄已經到期
  • 監控金鑰的使用紀錄

金鑰輪換週期

定期輪換金鑰,可以縮短任何一把外洩金鑰的有效期間。

金鑰類型 建議輪換週期
正式環境伺服器金鑰 90 天
部署金鑰 90 天
SSL 憑證 每次續約時
API 密鑰 90 天
開發/測試環境金鑰 180 天

DevOps 團隊資安檢查清單

  • 所有伺服器是否都使用個人 SSH 金鑰?
  • 如果有共用金鑰,是否已設定 IP 限制?
  • 離職員工的金鑰是否會立即停用?
  • 是否訂有金鑰輪換時程?
  • 是否曾把 SSH 金鑰提交到 Git 儲存庫?
  • 聊天紀錄裡是否有以明文保存的金鑰?
  • 傳遞機密時是否使用會到期的管道?

總結

SSH 金鑰和憑證是伺服器安全的骨幹。用 Slack 私訊或 Email 傳送,就像把家裡的鑰匙釘在公布欄上。能發個人金鑰就發個人金鑰;非共享不可時,請使用到期時間盡可能短的秘密備忘錄。

現在就建立秘密備忘錄,安全地交付 SSH 金鑰。

建立秘密備忘錄

創建備忘錄

創建備忘錄

相關關鍵詞

SSH 金鑰共享
SSH 金鑰安全
SSL 憑證共享
部署金鑰管理
開發者 秘密備忘錄
DevOps 資安
如何安全地與團隊共享 SSH 金鑰和憑證 | LOCK.PUB Blog