最後の 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 リスナーを動かしているなら、固定フォワードでそのリスナーに届くのは別の構成です。

関連記事