ちょっとした作業をする際に知ったのだが、2017年頃にリリースされているOpenSSH v7.6以降ではReverse Dynamic Forwardingというものが追加されていたらしい。
-D
オプションで指定するDynamic Forwardingの逆で、sshサーバ側からsshクライアント側にsocksの口を開くというものらしい。
こんなの追加されてたんだ…(知らなかった)。
オプションの指定は簡単で、-Rで対象のポートだけ指定すると良いらしい(Reverse port forwardingとまじりそうだな…)。
ssh -R 9999 server
確認の際は、sshサーバ側で以下のようにcurlを実行してやればいい。 Dynamic forwardingに使っているポートをproxyとして指定する。
curl --socks5-hostname 127.0.0.1:9999 http://httpbin.org/ip
あとは、レスポンスのグローバルIPがsshクライアント側のものであればOK。
地味に便利な機能だ(´・ω・`)。 自分の作ってるGoのsshライブラリにも追加しようかな。