更新:2025/03/18

【SSH】Windowsで発生する秘密鍵の権限エラー「Permissions for 'XXXXX' are too open.」の解決方法

はるか
はるか
SSHでリモートサーバーに接続しようとしたら、「WARNING: UNPROTECTED PRIVATE KEY FILE!」ってエラーが出た。

ふゅか
ふゅか
それ、秘密鍵のファイル権限が緩すぎると出る警告ね!SSHでは、秘密鍵が他のユーザーから見えないように厳しく管理しないとダメなの。

1. 問題の概要

SSHでリモートサーバーに接続しようとした際、以下のような警告メッセージが表示されることがあります。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'C:/Users/ユーザー名/ssh/XXXXX' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

このエラーは、Windows環境でSSH秘密鍵(private key)のファイル権限が適切に設定されていないために発生します。SSHでは、秘密鍵のセキュリティを確保するために厳格な権限管理が求められます。

1.1. エラーの原因

実際に私もWindows環境でSSHの秘密鍵を使用していた際、手動でアクセス権限を変更したことが原因でこのエラーに遭遇しました。もともと問題なく接続できていたのですが、権限を変更した途端にSSHクライアントが秘密鍵を認識せず、上記のエラーメッセージが表示されました。

そこで、アクセス権を適切に設定し直すことで問題を解決できました。本記事では、その具体的な手順を紹介します。

2. 解決方法

2.1. Step 1: SSH秘密鍵の場所を確認

まず、使用するSSH秘密鍵がどこに保存されているかを確認しましょう。

  1. エクスプローラーを開く
  2. SSH秘密鍵(例: id_rsaprivate_key.pem)が格納されているフォルダーへ移動
  3. 該当するファイルを右クリック → 「プロパティ」を開く

2.2. Step 2: セキュリティ設定の変更

  1. 「プロパティ」ウィンドウで「セキュリティ」タブを選択
  2. 「詳細設定」ボタンをクリック

  3. 「アクセス許可の変更」→「継承の無効化」を選択し、適用
    「継承されたアクセス許可をこのオブジェクトの明示的なアクセス許可に変換します」をクリック。
はるか
はるか
「プロパティ」開いた。次は?
ふゅか
ふゅか
「セキュリティ」タブに移動して、「詳細設定」ボタンを押してね。そこから「アクセス許可の変更」→「継承の無効化」を選択するの!

2.3. Step 3: 不要なアクセス権の削除

  1. 継承を無効化した後、編集ボタンをクリック。
  2. 一覧に表示されるすべてのユーザーとグループを削除

  3. 自分のWindowsユーザーアカウントを追加します。
    追加ボタン
    をクリックします。
    その後、「選択するオブジェクト名を入力してください」という個所にあなたがログインしている今のユーザー名を追加します。
    入力し終わったら「OK」をクリック。

はるか
はるか
じゃあ、不要なアクセス権を削除すればいい?

ふゅか
ふゅか
その通り!「編集」ボタンを押して、表示されるすべてのユーザーとグループを削除しよう。

2.4. Step 4: 適切な権限の付与

  1. 「フルコントロール」にチェックを入れる
  2. 変更を適用し、「OK」をクリック

2.5. Step 5: SSH接続を再試行

設定が完了したら、PowerShell または コマンドプロンプトを開き、以下のコマンドを実行してSSH接続を試してください。

ssh -i C:/Users/ユーザー名/ssh/XXXXX user@remote-server

エラーが解消され、正常に接続できるはずです。

PR