トラブルシューティング

SSH "UNPROTECTED PRIVATE KEY FILE":コマンド 1 つの修正

SSH は、ファイルが他人から読める秘密鍵を無視します。Linux/macOS では chmod 600、Windows では icacls で修正 —— SSH がこれほど厳格な理由、正しい権限、そしてモバイルクライアントがこれに決して遭遇しない理由。

CC Chen Chen· 創業者·2026年6月24日·5 分で読めます

"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" は単純に起こり得ません。

スマホ上でアプリが管理する鍵で接続された SSH セッション
アプリで生成した鍵は権限を持つファイルではなくデバイスの Keychain に存在します —— だから「権限が開きすぎ」という種類のエラーは一切現れません。

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_ed25519chmod 700 ~/.ssh
  • 修正(Windows):継承された ACL を削除し、自分のユーザーだけに付与(icacls … /inheritance:r)
  • 正しい権限:秘密鍵 600、.ssh ディレクトリ 700、公開鍵 644
  • モバイルでは:鍵はファイルではなくデバイスの Keychain に存在 —— このエラーは起こり得ない
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog