SOCKS の出口を最後の SSH ジャンプに置く
SSH ジャンプホスト経由の転送とローカルの動的フォワードを組み合わせ、最終的なウェブサイト接続は意図したゲートウェイに保ちます。
最後の SSH サーバーをホストとして設定し、中間サーバーを ProxyJump に入れます。
Host proxy-exit
HostName exit.example
User operator
ProxyJump [email protected]
DynamicForward 127.0.0.1:1080それらのホストで許可されたアカウントを使い、ssh -N proxy-exit を起動します。ローカルアプリケーションが 127.0.0.1:1080 で SOCKS を使うよう設定します。リスナーはクライアント側にあり、SSH 接続は exit.example に jump.example を経由して到達します。
要求されたウェブサイト接続は、最後の SSH セッションの遠端—exit.example—から開かれます。ジャンプは SSH の転送をそのホストまで運ぶだけで、最初に到達できたマシンという理由だけで SOCKS の出口になるわけではありません。
宛先が見るのは、出口ホストのルーティングと NAT が選んだアドレスです。ホスト名のログインアドレスと一致する必要はありません。両方のサーバーにはそれぞれの役割に必要な転送権限が要り、ホスト鍵の検証は意図した SSH エンドポイントに引き続き適用されます。
この構成は SSH の動的フォワード によって SOCKS サービスを作ります。ゲートウェイがすでに独立した SOCKS リスナーを動かしているなら、固定フォワードでそのリスナーに届くのは別の構成です。