SSHの逆方向ダイナミック転送:リモートSOCKSリスナーを作成する
SSHサーバー上に逆方向ダイナミックSOCKSリスナーを作成し、宛先への接続はクライアント側から開きます。
通常、SSH SOCKSトンネルはノートPCにサーバーのネットワーク出口を与えます。逆方向ダイナミック転送はこの配置を逆にします。リモートマシン上のプログラムが、SSHクライアント側で利用できるネットワークを使えるようになります。
宛先を省略したリモート転送に対応するOpenSSHクライアントの場合:
ssh -N -R 127.0.0.1:1080 [email protected]
SOCKSリスナーはremote.example.net上にあり、そのloopbackアドレスにバインドされています。そこのプログラムは127.0.0.1:1080を使います。宛先への接続はSSHを通って戻り、クライアントが動作している側から開かれます。
IPより先に方向を読む
-Rのドキュメントは、省略された宛先を意味のあるものにします。port:host:hostportを含む指定は、代わりに固定の転送です。古いクライアントが短いダイナミック形式に対応していると決めつけないでください。
外向きのIPは、クライアント側のネットワークがこれらの接続に使うものです。家庭用ルーターの背後にあるノートPCは、ルーターの変換されたパブリックアドレスから出ることがあります。それは自動的にSSHサーバーのIPではなく、ノートPCに直接割り当てられたアドレスでもありません。
リモートリスナーは制限しておきます。ワイルドカード結合は、サーバーのポリシー次第で、他のマシンがクライアント側のネットワークを出口として使えるようにします。loopbackでさえ、リモートホスト上の他の適格なプロセスから利用できる場合があります。プロセスごとの秘密ではありません。
宛先を限定する場合は、PermitRemoteOpenとサーバーの転送ポリシーを確認してください。経路はクライアントがオンラインであり続けることにも依存します。その接続が閉じると、リモートのプロキシ経路は消えます。逆方向転送は接続の発生元を変えるものであり、SSHセッションから独立した単独のプロキシを提供するものではありません。