"UNPROTECTED PRIVATE KEY FILE" 是什麼意思
SSH 拒絕使用你的私鑰,因為這個檔案能被機器上的其他使用者讀到。修復就一條命令——把檔案權限收緊到 600(僅擁有者可讀寫):
chmod 600 ~/.ssh/id_ed25519 Linux 或 macOS 上這就夠了。本文剩下的部分講為什麼 SSH 這麼嚴、Windows 怎麼修、以及為什麼這個問題在做得好的行動裝置客戶端上根本不會出現。
報錯全文
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/you/.ssh/id_ed25519' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored. 關鍵的一行是 "This private key will be ignored."——SSH 不只是警告,而是直接拒絕遞這把金鑰,所以連線隨後會以 Permission denied (publickey) 失敗。
SSH 為什麼這麼嚴
私鑰是證明"你就是你"的唯一秘密。如果機器上別的使用者能讀到它(0644 = 擁有者可寫、所有人可讀),他們就能複製走、在每一臺信任這把金鑰的伺服器上冒充你。SSH 把全員可讀的私鑰預設當作"已洩露",拒絕碰它。這是特性,不是找碴。
Linux / macOS 上的修復
chmod 600 ~/.ssh/id_ed25519 # 私钥:仅属主可读写
chmod 644 ~/.ssh/id_ed25519.pub # 公钥可保持可读
chmod 700 ~/.ssh # 目录:仅属主
chown $USER ~/.ssh/id_ed25519 # 确认归你所有 最常見的成因:從另一臺機器、隨身碟或雲端硬碟複製金鑰過來——複製出來的副本帶預設 644 權限。重新收緊到 600 每次都能修好。(同一個檔案、連線的另一端:如果是伺服器上的 authorized_keys 權限太開放,看 publickey 那篇。)
Windows 上的修復
Windows 不用 chmod;Windows 版 OpenSSH 檢查的是 NTFS ACL。乾淨的修法是移除繼承權限、只授予你自己:
icacls "C:\Users\You\.ssh\id_ed25519" /inheritance:r
icacls "C:\Users\You\.ssh\id_ed25519" /grant:r "%USERNAME%:R" 或在檔案 內容 → 安全性 → 進階 裡:停用繼承,刪掉除你自己帳號外的所有條目。
為什麼這個錯在好的行動裝置客戶端上不會有
這整類報錯是檔案系統權限問題——它存在的唯一原因是金鑰放在一個 OS 使用者能讀的普通檔案裡。做得好的行動裝置 SSH 客戶端不把金鑰存成散落的檔案:金鑰存在裝置的安全儲存(iOS/Android Keychain)裡,只有 App 能存取。沒有 chmod 可以填錯,"UNPROTECTED PRIVATE KEY FILE" 就根本不可能發生。
在 TermAI 裡,App 替你生成 Ed25519 金鑰並安全儲存;你用它連線,需要裝到伺服器上時用一鍵部署把公鑰那半寫進 authorized_keys。私鑰永遠不會變成一個你得操心權限的檔案。
常見問題
怎麼修 "UNPROTECTED PRIVATE KEY FILE"?
對私鑰跑 chmod 600(並 chmod 700 ~/.ssh)。Windows 上移除繼承 ACL、只授予你自己。SSH 就不再忽略這把金鑰。
SSH 私鑰該是什麼權限?600(僅擁有者讀寫)。.ssh 目錄應為 700,公鑰 .pub 可為 644。
為什麼複製金鑰後才開始報這個?
從隨身碟、雲端儲存或另一臺機器複製出來的副本帶預設 644(全員可讀)權限。重新收緊到 600。
不管它危險嗎?
危險——全員可讀的私鑰可能被機器上任何其他使用者偷走。修權限,別繞過這個檢查。
快速事實
- 含義:私鑰檔案能被他人讀到,SSH 拒絕使用(隨後以 publickey 失敗)
- 修復(Linux/macOS):
chmod 600 ~/.ssh/id_ed25519、chmod 700 ~/.ssh - 修復(Windows):移除繼承 ACL、只授予你自己(
icacls … /inheritance:r) - 正確權限:私鑰 600、
.ssh目錄 700、公鑰 644 - 行動裝置端:金鑰存裝置 Keychain、不是檔案——此錯不會發生
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.