はじめに
以下のような場合を考えます。
- SSHで接続した (SSH接続1) 先のサーバーでさらにSSHを使う必要が出た (SSH接続2)
- 接続先のサーバーでのSSH (SSH接続2) に使う秘密鍵はローカルPCにしかない
この場合、SSH接続2の秘密鍵をローカルPCからサーバー1に持っていくという方法が考えられますが、セキュリティ的に心配になると思います。
そこで、この記事では秘密鍵をサーバー1に移動させずに、サーバー1からSSH接続する方法を紹介します。
本題 (ForwardAgent)
-
.ssh/config内のSSH接続1の設定にForwardAgent yesを追加する。 -
ssh-add SSH接続2の秘密鍵のパスを実行し、SSH Agentに秘密鍵を登録する (例:ssh-add ~/.ssh/id_rsa) -
ssh-add -lで登録できたかを確認
秘密鍵のパスフレーズが設定されている場合は、2.で入力することになります。
Macの場合、ssh-add --apple-use-keychain SSH接続2の秘密鍵のパスにすると、パスフレーズをmacOSのキーチェーンに保存できるみたいです。
↓ 詳しくは公式ドキュメントを
おわりに
割と便利なので、紹介しました。
ForwardAgentを追加するだけではなく、ssh-addをしないと機能しないので、ご注意を。(経験者が語る)
あと、ForwardAgentは秘密鍵そのものを移動しませんが、信頼できるサーバーに対して使用することをオススメします。