【Windows】ssh通信のプライベートキーに権限を設定する

この記事は現役ウェブディベロッパーがわかりやすさにこだわって作成しました

🐚【Windows PowerShell】SSH接続する際にパーミッションエラーが発生した場合の権限変更 - Qiita
環境 Windows 10 Windows PowerShell やりたいこと EC2のインスタンスに接続したいがキーファイルのパーミッションでエラーが出る windowsなのでchmodが使えないのでファイルのプロパテ...

環境

Windows 11

やりたいこと

EC2のインスタンスに接続したいがキーファイルのパーミッションでエラーが出る
windowsなのでchmodが使えないのでファイルのプロパティから変更を行う

PS C:> ssh -i C:\key\test\test\KeyFile.pem root@000.000.00.00
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'C:\\key\\test\\test\\KeyFile.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "C:\\key\\test\\test\\KeyFile.pem": bad permissions
root@000.000.00.00: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

やったこと

先ずはキーファイルのプロパティからセキュリティタブを押下

設定が下記の様になっているはず

before.png

「編集(E)」を押下して現状のすべてのグループ名またはユーザ名を「削除(R)」から削除し
その後に現行のアカウントを追加してフルコントロールを許可します

delete.png

削除の際に下記メッセージが表示された場合は一旦「OK」を押下して前画面に戻ります

Authenticated Users は親からアクセス許可を継承しているので、このオブジェク
トを削除することはできません。Authenticated Users を削除するには、アクセス
許可の継承を妨げる必要があります。アクセス許可の継承のオプションをオフに
して、Authenticated Users の削除を再試行してください。

「詳細設定(V)」を押下してセキュリティの詳細設定を開き、「継承の無効化(I)」を押下

「継承されたアクセス許可をこのオブジェクトの明示的なアクセス許可に変換します。」を選択

inharitepng.png

「継承の無効化(I)」が「継承の有効化(I)」に変わったら「OK」で画面を閉じる

再度「編集(E)」を押下してすべてを削除

alldelete.png

「追加(D)」からユーザ または グループ の選択を開き
選択するオブジェクト名を入力してくださいの枠内にログオンしているアカウント名を入力して「名前の確認(C)」押下

複数表示される場合は正しい方を選び「OK」で閉じる

残った現行ユーザにフルコントロールを与えて「OK」

complete.png

結果

これでSSH可能になります

尚、フルコントロールを与えていないと下記のPermission deniedになります

ちなみにこれでscpコマンドを使ってサーバーからファイルのダウンロードやアップロードができるようになります。

# ダウンロード 
scp -i {秘密鍵のパス} -P {ポート番号} {ユーザ名}@{ホスト名}:{ファイルパス} {ダウンロード先}
# アップロード
scp -i {秘密鍵のパス} -P {ポート番号} {アップロードファイルパス} {ユーザ名}@{ホスト名}:{フォルダパス}

PHP/Javascript/WORDPRESS案件全般承ります

この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました