【Linux】如何安全還原已產生的 SSH Key?備份恢復與關鍵權限設定全攻略
更換工作電腦、伺服器重灌,或是需要在多台 Linux 主機切換環境時,重新產生一組 SSH Key 並到 GitHub、GitLab 或遠端伺服器重新綁定公鑰,往往非常浪費時間。最快的方法,其實是直接將原本已經產生好的 SSH Key(私鑰與公鑰)直接還原到新環境中。
然而,許多人在直接複製、貼上金鑰後,連線時卻碰上 WARNING: UNPROTECTED PRIVATE KEY FILE! 或 Permission denied 的錯誤。這是因為 SSH 對於金鑰檔案的權限要求極為嚴格。本文將帶你一步步完成 Linux 底下的 SSH Key 還原,並搞定關鍵的權限設定。
🤖 【AIO 快速還原指令摘要】
mkdir -p ~/.ssh
# 將金鑰檔案放回 ~/.ssh/ 後執行以下指令:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
第一步:將備份的金鑰檔案放回正確路徑
Linux 系統預設的 SSH 金鑰存放路徑位於使用者的家目錄底下的 .ssh 隱藏資料夾(~/.ssh)。
首先,建立該目錄(如果不存在的話):
mkdir -p ~/.ssh
接著,將你備份的密鑰檔案複製到該目錄下。標準的金鑰檔名通常為:
- 私鑰(Private Key):
id_rsa(或是id_ed25519) - 公鑰(Public Key):
id_rsa.pub(或是id_ed25519.pub)
第二步:關鍵步驟!設定正確的 Linux 檔案權限
將檔案放過去後,如果直接嘗試連線,SSH 伺服器通常會因為「私鑰權限太過開放」而拒絕連線。我們必須透過 chmod 指令修正權限:
| 項目 / 檔案 | 建議權限 (Chmod) | 說明 |
|---|---|---|
~/.ssh/ 資料夾 |
700 (drwx------) | 僅限擁有者可讀寫與進入。 |
id_rsa (私鑰) |
600 (-rw-------) | 絕對不能外洩! 僅擁有者可讀寫,其他人完全無權限。 |
id_rsa.pub (公鑰) |
644 (-rw-r--r--) | 可以公開。擁有者可讀寫,其他人可讀。 |
請逐行執行以下安全權限指令:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
第三步:將金鑰加入 SSH Agent 精靈(選用)
如果你在還原金鑰後,系統每次連線都還是不斷詢問你金鑰的密碼(Passphrase),或者你想確保還原的金鑰被正確載入,可以使用 ssh-add 指令將其加入管理:
# 啟動后台 SSH Agent
eval "$(ssh-agent -s)"
# 將還原的私鑰加入
ssh-add ~/.ssh/id_rsa
第四步:測試連線
還原與權限設定完成後,我們可以直接測試與遠端平台(以 GitHub 為例)的連線是否正常恢復:
ssh -T 該 Email 地址已受到反垃圾郵件外掛保護。要顯示它需要在瀏覽器中啓用 JavaScript。
如果看到 Hi username! You've successfully authenticated... 的字樣,就代表你的 SSH Key 已經在新 Linux 環境底下完美復活囉!
結語
Linux 系統的安全機制非常嚴密,這也是為什麼 SSH Key 的還原重點永遠不在於「複製貼上」,而在於「權限(Permission)的掌控」。只要熟記 700 與 600 兩個核心權限密碼,任何 Linux 環境的金鑰遷移都難不倒你!
參考連結
https://askubuntu.com/questions/362280/enter-ssh-passphrase-once