ssh -vvv で見ても Permission denied (publickey) のままな理由

この記事の内容について、業務や開発でお困りの場合は個別に対応できます。

ssh 接続が失敗し、 Permission denied (publickey) が出たので ssh -vvv を実行した。 ログを見ると 鍵は送っているように見える。 それでも接続できない――。

この記事は、その段階まで来た人向けに書いています。

この記事の前提:

  • パスワード認証ではなく、公開鍵認証を使っている
  • ssh -vvv user@host を実行できている
  • それでも原因が分からず詰まっている

「鍵の作り方」や「SSHとは何か」は扱いません。


問題のログ(これは“正常に失敗している”)

まず、今回のログをそのまま見ます。

debug1: Offering public key: /home/user/.ssh/id_rsa RSA SHA256:xxxx
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: /home/user/.ssh/id_rsa RSA SHA256:xxxx
debug1: No more authentication methods to try.
Permission denied (publickey).

このログ、実はかなり情報量が多いです。

「Offering public key」が出ている=認証成功、ではない

最初に一番大事なことを書きます。

Offering public key が出ていても、認証は成功していません。

この行は、 「クライアントがこの公開鍵を使って認証を試みた」 という意味であって、 「サーバーがその鍵を受け入れた」 という意味ではありません。


ログを一行ずつ分解する

① 鍵を“出している”

debug1: Offering public key: /home/user/.ssh/id_rsa RSA SHA256:xxxx
  • クライアントは id_rsa に対応する 公開鍵をサーバーに送った
  • 鍵ファイルは読み込めている
  • SSH クライアント側に問題はほぼない

② 認証リクエストを送信

debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
  • 公開鍵認証のパケットを送信
  • サーバーの応答待ち

③ サーバーは「publickey 認証は可能」と言っている

debug1: Authentications that can continue: publickey

ここが重要です。

  • サーバーは 公開鍵認証そのものは有効だと言っている
  • PasswordAuthentication no のような設定ではない

つまり、 「方式は合っているが、その鍵はダメ」 という状態です。

④ 同じ鍵をもう一度出して、終わる

debug1: Offering public key: /home/user/.ssh/id_rsa RSA SHA256:xxxx
debug1: No more authentication methods to try.
Permission denied (publickey).
  • 使える鍵はこれしかない
  • それが拒否された
  • 結果として Permission denied (publickey)

ここから分かること(重要)

このログから 確定できる事実は次の通りです。

  • 鍵ファイルは存在する
  • クライアントは正しく鍵を送っている
  • サーバーは公開鍵認証を受け付けている
  • しかし、その鍵は認証に使えなかった

👉 問題は「鍵の出し方」ではありません。

👉 問題は サーバー側でその鍵が“有効な鍵として登録されていない”ことです。


Offering public key → rejected になる典型パターン

ここからが実務的な原因です。

1. authorized_keys が別ユーザーのもの

一番多い原因です。

  • ssh user@hostuser
  • ~/.ssh/authorized_keys の 所有者

これがズレていると、必ず拒否されます。

例:

  • 実際に鍵を置いたのは root
  • ログインしているのは deploy

2. authorized_keys の中身が違う

  • 鍵を貼り間違えた
  • 古い鍵を消し忘れている
  • ローカルで鍵を作り直している

「同じ名前の鍵ファイル」でも、中身が違えば別の鍵です。 鍵ペアの確認方法は以下の記事で詳しく解説しています。

SSH接続エラー?鍵ペアが本当に合っているか不安になったら、最初に確認すべきこと

3. パーミッションがアウト

SSH は権限にかなり厳格です。

最低限:

~/.ssh            700
~/.ssh/authorized_keys 600

どれか一つでも緩いと、無言で拒否されます。 この場合も Offering public keyPermission denied になります。

4. sshd_config の設定

以下を変更している環境では要注意です。

  • AuthorizedKeysFile がデフォルトと違う
  • ホームディレクトリが通常と違う
  • chroot 環境

特に VPS や管理代行案件でありがちです。


ここまで来た人が次にやるべきこと

ssh -vvv を見てこのログが出たら、次に見る場所はログではありません。

見るべきは:

  1. サーバー側の ~/.ssh/authorized_keys
  2. そのファイルの所有者・権限
  3. 本当にそのユーザーでログインしているか

もし root で入れるなら、authorized_keys を 目視で確認するのが一番早いです。


まとめ

ssh -vvv

  • Offering public key が出ている
  • それでも Permission denied (publickey)

この状態は、

「鍵は正しく送られているが、サーバー側で“その鍵が正しいものとして扱われていない”」

という、かなり限定された失敗です。

ここまで来ているなら、SSH の仕組みが分かっていないのではありません。 サーバー側の“現実の状態”と想定がズレているだけです。

ZIDOOKA!

この記事の内容について、対応できます

この記事に関連する技術トラブルや開発上の問題について個別対応を行っています。

個別対応は3,000円〜 内容・工数により事前にお見積りします
最後までお読みいただきありがとうございました

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

AI活用に関するポリシー

当サイトでは、記事の執筆補助にAIを活用する場合がありますが、全面的な委任は行いません。