転送されたローカルポートを127.0.0.1の代わりに0.0.0.0にバインドするにはどうすればよいですか? GatewayPorts=yes を使用すると、「操作は許可されません」

転送されたローカルポートを127.0.0.1の代わりに0.0.0.0にバインドするにはどうすればよいですか? GatewayPorts=yes を使用すると、「操作は許可されません」

(リモート) SSHサーバーはremote(リモート)127.0.0.1ポート20001でサービスを実行します. SSHポート転送を通じてこのサービスをローカルで提供したいと思います。

ssh -vvv -4 -L 20001:127.0.0.1:20001 remote

このコマンドを使用すると、ポート転送とサービスアクセスに適しています。

ただし、トンネルは私のローカルシステムの127.0.0.1にバインドされているため、SSHコマンドを実行しているローカルシステムからのみリモートサービスにアクセスできます。ローカルコンピュータポート20001に接続してローカルLANでリモートサービスを使用できるように、トンネルを0.0.0.0にバインドします。

このオプションのマンページには次のものが-Lあります。

デフォルトでは、ローカルポートはGatewayPortsの設定に従ってバインドされます。ただし、明示的なバインディングアドレスを使用して特定のアドレスに接続をバインドすることは可能です。 「localhost」のバインディングアドレスは、受信ポートがローカル専用であることを示し、空のアドレスまたは「*」は、ポートがすべてのインターフェイスで使用可能であることを示します。

源泉:https://manpages.debian.org/bookworm/openssh-client/ssh.1.en.html#L

GatewayPorts=yesだから設定を追加し、両方を試しました。

ssh -vvv -4 -o GatewayPorts=yes -L 20001:127.0.0.1:20001 remote

また

ssh -vvv -4 -o GatewayPorts=yes -L *:20001:127.0.0.1:20001 remote

ただし、次のエラーが発生します。

debug1: Local connections to *:20001 forwarded to remote address 127.0.0.1:20001
debug3: channel_setup_fwd_listener_tcpip: type 2 wildcard 1 addr NULL
debug1: Local forwarding listening on 0.0.0.0 port 20001.
listen: Operation not permitted
listen [0.0.0.0]:20001: Operation not permitted
channel_setup_fwd_listener_tcpip: cannot listen to port: 20001
Could not request local forwarding.

転送されたローカルポートを127.0.0.1の代わりに0.0.0.0にバインドするにはどうすればよいですか?エラーはどこで発生しますか?

  • このポートは、127.0.0.1にバインドするときに使用できます。それでもnetstatポートが使用されていないことを再確認しました。
  • SSHコマンドの実行には役立ちませんsudo
  • リモート側でリモートポート転送バインディング0.0.0.0を使用する場合にのみ、サーバーでこの設定が必要であるとしますGatewayPorts=yessshd_configとにかく、サーバー構成を変更してサーバーを再起動しましたが、期待どおりにローカルポートの転送に使用したSSHコマンドには何の影響もありませんでした。

関連情報