PowerShellからSSH接続を行う際に「Permission denied」エラーが出ることがあります。このエラーは主に認証や設定の問題によって発生します。本記事では、実際のエラーメッセージ例を交えながら、原因と解決策を解説します。
実際のエラーメッセージ例
user@host: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
これは典型的な「Permission denied」エラーで、公開鍵認証・パスワード認証などすべて失敗したことを意味しています。
原因と解決方法
1. 公開鍵・秘密鍵の権限や配置の問題
Linux/Unix系サーバーでは、~/.ssh/authorized_keys
に正しく公開鍵が配置されていないとエラーが発生します。
- 公開鍵がサーバーにコピーされていない
~/.ssh
やauthorized_keys
のパーミッションが厳格でない
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
2. 秘密鍵の指定ミス
PowerShellで秘密鍵を指定する場合は、次のように明示します。
ssh -i C:\Users\user\.ssh\id_rsa user@server
秘密鍵ファイルの拡張子や場所を間違えると接続できません。
3. ユーザー名の誤り
Windows環境から接続する際、意図せずローカルユーザー名で接続しようとするケースがあります。
ssh wronguser@server
→ Permission denied
ssh correctuser@server
→ 接続成功
4. Windows特有のトラブル
Windowsで作成した鍵ファイルは、改行コード(CRLF)や文字コード(UTF-16)によって不正な形式になることがあります。
- 秘密鍵やconfigファイルがUTF-16で保存されていると認識されない
- 改行コードがCRLFになっていると、Linuxサーバーで無効扱いされる
対策として、テキストエディタで UTF-8 + LF に変換して保存してください。
5. サーバー側のSSH設定
/etc/ssh/sshd_config
で公開鍵認証が無効化されている場合もあります。
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
設定を変更した場合はsystemctl restart sshd
で再起動が必要です。
まとめ
「Permission denied」エラーは認証関連の不具合がほとんどですが、Windows環境では特に「改行コード」「文字コード」の違いが原因になることが多いです。ファイルの保存形式を確認しつつ、権限やユーザー名も合わせて見直すことで解決できるケースが多いです。