yuu_nkjm blog
2011-11-29(Tue) 編集
[ssh][PuTTY] sshの多段の認証転送
状況
秘密鍵の置き場所に迷ったときは認証の転送が便利というお話し.
クライアントPC => ゲートウェイサーバ(鍵認証のみ) => アクセス対象サーバ(鍵認証のみ)
といった経路でしか管理したいサーバにアクセスできない(下図)とき,ゲートウェイサーバに秘密鍵を置くしかないの?となることがある.そんなときは,認証の転送が便利.下図のプライベートサーバ,公開サーバ2において,また認証の転送を行いたいときは「もう一段階先への転送」で書いた内容を実行する必要がある.
認証鍵の転送
SSHクライアントにPuTTYを使っている場合,SSH->SSH認証の設定->認証パラメータの「エージェントフォワーディングを認める」にチェックを入れる.以下のページに詳細がよくまとまっている.
Pageant は ssh-agent と同じく、認証鍵の転送機能を持っています。これを利用すれば、たとえログイン先のサーバーに認証鍵がなくても、ローカルにある認証鍵を使用してログイン先からさらに別のサーバーに SSH 接続を確立できます。サーバーに秘密鍵を保存する必要が無いため、秘密鍵の流出の危険を大幅に削減できます。
Pageant による認証鍵の転送は以下の手順で利用できます。
Pageant を起動し、必要な認証鍵を登録する。 PuTTY を起動する。 普通に SSH ログインするのですが、その際に [接続]-[SSH]-[認証] の「エージェントフォワーディングを認める」にチェックを入れておきます。もしくは、起動時に "-A" オプションを指定する方法もあります。 ログイン先で、さらに "ssh <ユーザー名>@<ホスト名>" などとしてさらに別のホストにログインします。 Pageant に必要な認証鍵が登録されていれば、正常にログインできるはずです。なお、Pageant で認証鍵の転送機能を利用するためには、ログイン先の SSH サーバーが OpenSSH でなければなりません。本家 SSH は OpenSSH とは別のプロトコルを使用しており、そちらは Pageant ではサポートされていません。
もう一段階先への転送
SSHサーバを渡り歩くには,~/.ssh/configに"ForwardAgent yes"を追加する必要がある.
cat ~/.ssh/config # "ForwardAgent yes"がなかったら,以下を実行. echo "ForwardAgent yes">>~/.ssh/config
ssh の agent forwarding | 自作自演がすごく分かりやすかった.