【PowerShell】SSH接続エラー「Permission denied」が出たときの原因と対処法

PowerShellからSSH接続を行う際に「Permission denied」エラーが出ることがあります。このエラーは主に認証や設定の問題によって発生します。本記事では、実際のエラーメッセージ例を交えながら、原因と解決策を解説します。

実際のエラーメッセージ例

user@host: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

これは典型的な「Permission denied」エラーで、公開鍵認証・パスワード認証などすべて失敗したことを意味しています。

原因と解決方法

1. 公開鍵・秘密鍵の権限や配置の問題

Linux/Unix系サーバーでは、~/.ssh/authorized_keys に正しく公開鍵が配置されていないとエラーが発生します。

  • 公開鍵がサーバーにコピーされていない
  • ~/.sshauthorized_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環境では特に「改行コード」「文字コード」の違いが原因になることが多いです。ファイルの保存形式を確認しつつ、権限やユーザー名も合わせて見直すことで解決できるケースが多いです。