👌
SSHのDynamic Forwardを気軽に使うTIPS
SSHのDynamic Forward機能って超絶便利ですよね。昨今は在宅勤務になったのもあり、以前より利用頻度が増えている気がします。
便利すぎて次のような$HOME/.ssh/config
を使っている人も多いのではないでしょうか。
Host server01
HostName server01.example.com
DynamicForward 1080
Host server02
HostName server02.example.com
DynamicForward 1080
しかし、この設定だと先にログインした接続が1080番ポートを握ってしまうので、後から接続した方でDynamic Forwardを使いたい場合に使えない状態になります。
$ ssh server02
mux_client_forward: forwarding request failed: Port forwarding failed
muxclient: master forward request failed
bind [127.0.0.1]:1080: Address already in use
(以下略)
この事故の原因は、server01とserver02の両方の設定でDynamic Forwardを有効にしていることです。必要なときだけDynamic Forwardを有効にすればいいんですが、その際の設定と利用が簡単な方がいいですよね。
このような場合、ssh_config
のホスト名のエイリアスとワイルドカードの機能が使えます。具体的には下記のように$HOME/.ssh/config
を書くとシンプルにやりたいことが実現できます。
Host server01 server01.proxy
HostName server01.example.com
Host server02 server02.proxy
HostName server02.example.com
Host *.proxy
DynamicForward 1080
このように書いた上で、普段のSSHアクセスはssh server01
とし、Dynamic Forwardを利用したいときだけ ssh server01.proxy
などとすることでDynamic Forwardのオンオフをホスト名の使い分けで実現できます。
ssh_config
のHostブロックのホスト名にはエイリアス名を列挙できること、ホスト名のワイルドカードを利用すれば複数ブロックにマッチすることを利用した設定例でした。このテクニックは汎用性が高いので他にも色々な応用ができると思います。
Discussion