ポート80をローカルマシン(localhost
)からポート8000のリモートホストに転送するコマンドは次のとおりです。
ssh -R 8000:localhost:80 oli@remote-machine
これには、SSHサーバーで追加の調整が必要です。次の行を追加します/etc/ssh/sshd_config
。
Match User oli
GatewayPorts yes
次に、サーバーを実行して構成を再読み込みしますsudo reload ssh
。
この設定GatewayPorts yes
により、SSHはワイルドカードアドレスのポート8000をバインドするため、パブリックアドレスremote-machine
(remote-machine:8000
)で使用可能になります。
ワイルドカードアドレスのすべてをバインドしないオプションが必要な場合は、に変更GatewayPorts yes
しGatewayPorts clientspecified
ます。ssh
デフォルトではループバックアドレスにバインドするためbind_address
、ワイルドカードアドレスをバインドするには空を指定する必要があります。
ssh -R :8000:localhost:80 oli@remote-machine
:
前8000
ならば必須であるGatewayPorts
に設定されているclientspecified
し、あなたがへのパブリックアクセスを許可したいですremote-machine:8000
。
関連するマニュアルの抜粋:
ssh(1)
-R [bind_address:] port:host:hostport
リモート(サーバー)ホスト上の指定されたポートが、ローカル側の指定されたホストとポートに転送されることを指定します。これは、リモート側のポートをリッスンするソケットを割り当てることで機能し、このポートへの接続が確立されるたびに、接続は安全なチャネルを介して転送され、ローカルマシンからホストポートホストポートに接続されます。デフォルトでは、サーバー上のリスニングソケットはループバックインターフェイスのみにバインドされます。これは、bind_addressを指定することでオーバーライドできます。空のbind_addressまたはアドレス「*」は、リモートソケットがすべてのインターフェイスでリッスンする必要があることを示します。リモートbind_addressの指定は、サーバーのGatewayPortsオプションが有効になっている場合にのみ成功します(sshd_config(5)を参照)。
sshd_config(5)
GatewayPorts
リモートホストがクライアント用に転送されたポートへの接続を許可されるかどうかを指定します。GatewayPortsを使用して、sshdがリモートポート転送を非ループバックアドレスにバインドできるように指定して、他のホストが接続できるようにすることができます。引数は、リモートポートフォワーディングをローカルホストのみで使用可能にする「no」、リモートポートフォワーディングをワイルドカードアドレスにバインドする「yes」、またはクライアントがアドレスを選択できるようにする「clientspecified」です。転送はバインドされています。デフォルトは「no」です。
こちらもご覧ください:
GatewayPorts
ここが魔法の弾丸でした。このかなり強力な手法を特定のユーザーに限定できるバージョンを見つけたことが気に入っています。