[SSH][Putty] ログイン先のサーバーでSSH公開鍵認証でログインしようとしたら Permission denied (publickey,gssapi-with-mic).

Putty でSSHでログインしたサーバーから更に、SSH公開鍵認証で他のサーバーにログインしようとしたらエラーが発生しました。

■ エラー内容

$ ssh example.com
Permission denied (publickey,gssapi-with-mic).

原因は、Pagent の認証鍵の転送の設定がちゃんとできていなかったためです。

認証鍵の転送

Pageant は ssh-agent と同じく、認証鍵の転送機能を持っています。これを利用すれば、たとえログイン先のサーバーに認証鍵がなくても、ローカルにある認証鍵を使用してログイン先からさらに別のサーバーに SSH 接続を確立できます。サーバーに秘密鍵を保存する必要が無いため、秘密鍵の流出の危険を大幅に削減できます。

Pageant による認証鍵の転送は以下の手順で利用できます。

1. Pageant を起動し、必要な認証鍵を登録する。

2. PuTTY を起動する。

3. 普通に SSH ログインするのですが、その際に [接続]-[SSH]-[認証] の「エージェントフォワーディングを認める」にチェックを入れておきます。もしくは、起動時に “-A” オプションを指定する方法もあります。

4. ログイン先で、さらに “ssh <ユーザー名>@<ホスト名>” などとしてさらに別のホストにログインします。

5. Pageant に必要な認証鍵が登録されていれば、正常にログインできるはずです。

なお、Pageant で認証鍵の転送機能を利用するためには、ログイン先の SSH サーバーが OpenSSH でなければなりません。本家 SSH は OpenSSH とは別のプロトコルを使用しており、そちらは Pageant ではサポートされていません。

・引用元:Pageant でパスフレーズの入力を省く – WebOS Goodies はてなブックマーク - Pageant でパスフレーズの入力を省く - WebOS Goodies

僕の場合は、Pageantへの認証鍵の登録はしていたのですが、「エージェントフォワーディングを認める」にチェックを入れていなかったので、正常に認証鍵の転送ができていなかったみたいです。