Windows から SSH 接続するときに、次のような秘密鍵(プライベートキー)のパーミッションエラーが出ることがあります。
このエラーは、秘密鍵のパーミッションがカレントユーザーのみのアクセスに絞られていないときに発生します。 下記のいずれかの方法で解決できます。
- (方法1)秘密鍵を %USERPFOFILE% ディレクトリ以下に格納する
- SSH 秘密鍵を
C:\Users\maku\.ssh\private.key
のようなパスに配置するだけで OK です。 - ユーザーディレクトリに配置したファイルはカレントユーザーしか参照できないので、パーミッションのエラーが出なくなります。
- SSH 秘密鍵を
- (方法2)秘密鍵のパーミッション情報を変更する
コマンドプロンプトから
icacls
コマンドを使って SSH 秘密鍵のアクセス権を変更します。icacls .\private.key /inheritance:r icacls .\private.key /grant:r "%USERNAME%:R"
icacls
コマンド (Integrity Control Access Control List) は、Windows コマンドプロンプトおよび PowerShell で使用できるコマンドラインツールで、ファイルやディレクトリのアクセス制御リスト (ACL) を変更するために使用されます(ファイル自体の内容が変更されるわけではありません)。 上記のように実行することで、秘密鍵ファイルの読み込み権限をカレントユーザーのみに制限できます。