ポート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ここが魔法の弾丸でした。このかなり強力な手法を特定のユーザーに限定できるバージョンを見つけたことが気に入っています。