SSH Agent Forwarding
SSH Agent Forwarding
とは、多段で SSH 接続をする場合に秘密鍵を中継場所に置かないようにする手法です。それを実現するために ssh-agent
という機能を用います。ssh-agent
は SSH Agent Forwarding
とは直接関係はない技術です。
ssh-agent
については以下の記事が大変参考になりました。
ハマったところ
SSH Agent Forwarding
を用いる際に微妙にハマったところを書きます。なお、以下の全ての内容において、次のような多段の SSH 接続をするものとします。SSH の認証は全て鍵によるものとします。
[ホスト A] ----- (SSH 接続) -----> [ホスト B] ----- (SSH 接続) -----> [ホスト C] ----- (SSH 接続) -----> [ホスト D]
1. ssh-agent
での鍵の登録はどこのホストですればいいのか?
- ホスト A でのみ登録すればいいです
2. ~/.ssh/config
に書く ForwardAgent yes
はどこのホストで書けばいいのか?
- ホスト A の
~/.ssh/config
でのみ書けばいいです
3. ssh-agent
に登録した鍵を ~/.ssh/config
で呼び出すにはどういうふうに記述をしたらいいのか?
- 何も書かないでいいです
- いい感じに適切な鍵を呼んでくれます
4. /etc/ssh/sshd_config
に書く AllowAgentForwarding yes
はどこのホストで書けばいいのか?
- ホスト B および ホスト C で書きます
5. ホスト A
の ~/.ssh/config
は具体的にどのようになるか?
Host foobar HostName barfoo User hogehoge ForwardAgent yes
6. ホスト B
および ホスト C
の ~/.ssh/config
は具体的にどのようになるか?
Host foofoo HostName barbar User fugafuga
7. 設定内容を変えたけど反映されない!
sshd
を再起動しましょう- いったんシェルから抜けて入り直しましょう*1
*1:source コマンドを用いてもよいです