【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)的掌控」。只要熟記 700600 兩個核心權限密碼,任何 Linux 環境的金鑰遷移都難不倒你!

參考連結

https://askubuntu.com/questions/362280/enter-ssh-passphrase-once