"UNPROTECTED PRIVATE KEY FILE" の意味
SSH が秘密鍵の使用を拒否しているのは、そのファイルがマシン上の他のユーザーから読み取れる状態だからです。修正はコマンド 1 つ —— ファイル権限を 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 # 确认归你所有 最も多い原因は、別のマシン、USB メモリ、クラウドドライブから鍵をコピーしたことです —— コピーされた側は既定の 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)に存在し、アプリだけがアクセスできます。間違える chmod が存在しないので、"UNPROTECTED PRIVATE KEY FILE" は単純に起こり得ません。
TermAI ではアプリがあなたのために Ed25519 鍵を生成し、安全に保存します。あなたはそれで接続し、サーバー上で必要なら、ワンタップのデプロイで公開鍵の方を authorized_keys に書き込みます。秘密鍵は、あなたが権限を見張らなければならないファイルになることは決してありません。
よくある質問
"UNPROTECTED PRIVATE KEY FILE" はどう直しますか?
秘密鍵に chmod 600(および chmod 700 ~/.ssh)を実行します。Windows では継承された ACL を削除し、自分のユーザーだけに付与します。これで SSH は鍵を無視しなくなります。
SSH の秘密鍵はどの権限であるべきですか?600(所有者のみ読み書き可)。.ssh ディレクトリは 700、公開鍵 .pub ファイルは 644 で構いません。
なぜ鍵をコピーした後に始まったのですか?
USB メモリ、クラウドストレージ、別のマシンからのコピーは既定の 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.