はじめに
踏み台経由してsshする際にはOpenSSHのProxyJumpを使うと便利です。
で、WindowsのGUI sshクライアントであるPuTTYでもやりたいので調べたらできたのでまとめておく。
やりかた
PuTTY 0.77以降を使い、プロキシ設定で「SSH to proxy and use port forwarding」を選ぶ。
ranvisさんの日本語化バージョンだと「プロキシにSSH接続してポート転送」。
ドキュメントだと以下のようにに書かれてる。
‘SSH to proxy and use port forwarding’ causes PuTTY to use the secondary SSH connection to open a port-forwarding channel to the final destination host (similar to OpenSSH's -J option).
プロキシホスト名についてもOpenSSHのProxyJumpと同様に、PuTTYの保存済みセッション名を参照できます。
The ‘Proxy hostname’ field will be interpreted as the name of a PuTTY saved session if one exists, or a hostname if not.
Jump先(踏み台ホスト)でlocalhostに繋ぐ場合
大抵の場合は踏み台hostから別のホストへ接続しますが、踏み台ホストでlistenされてるポートへ接続する場合もあります1。このとき、「Consider proxying local host connections(ローカルホストからもプロキシ接続を行う)」をCheckしないとプロキシ設定を使わず直接繋ぎに行こうとします。
Connections to the local host (the host name localhost, and any loopback IP address) are never proxied, even if the proxy exclude list does not explicitly contain them. It is very unlikely that this behaviour would ever cause problems, but if it does you can change it by enabling ‘Consider proxying local host connections’.
踏み台先で接続するホスト名がプロキシ設定に関係するんかいな、と思ってソースを見ると割りと処理の頭でlocalhost
かどうかを見てる実装になってた。
Reference
Appendix: OpenSSHのProxyJumpについて
- ProxyJumpでhostnameを解決しながら踏み台サーバーをジャンプ - Qiita
- 多段SSHはProxyJumpと-Jオプションで - karakaram-blog
- 多段SSHならProxyJump!さよならProxyCommand | にっしーラボ
- 多段 ssh するなら ProxyCommand じゃなくて ProxyJump を使おう
- OpenSSH 7.3 の ProxyJump 機能の使い方 | Webシステム開発/教育ソリューションのタイムインターメディア
-
NAPT配下ネットワークにいるRasPiからインターネット上に存在するVPSへssh reverse tunnel掘ると、VPS上のlocalhostでRasPiに繋がるトンネル入り口がlistenすることになります。 ↩