SSH: RemotePortForw - 特権ポートのバインド

SSH: RemotePortForw - 特権ポートのバインド

非常に短く基本的な質問ですが、ネットワークの宿題で困っています。実装を求められているポイントは次のとおりです。

  • pc1 のポート 83 を s1 のポート 8000 にリダイレクトするために、SSH リモート ポート転送を設定します。

それを実現するために、私は単純な

s1:~# ssh -o StrictHostKeyChecking=no -NR 83:127.0.0.1:8000 [email protected] &

10.0.1.2 は pc1 の IP ですが、毎回次の警告が返されます:

警告: リスン ポート 83 のリモート ポート転送に失敗しました

すでに 83 を使用しているものは何も実行されておらず、ローカル (pc1 から) でポート 83 をリッスンしようとすると、簡単に実行できます。

注: バインドしようとするすべての特権ポートからこのエラーが発生します。

答え1

1024 未満のポートをバインドするには、root になるか、そのCAP_NET_BIND_SERVICE権限を持っている必要があります。これを取得するには、次のコマンドを実行します。

 sudo -E -- setpriv --inh-caps +net_bind_service --ambient-caps +net_bind_service --reuid $USERNAME /bin/bash

これにより、ユーティリティがルートとして実行されsetpriv、 に戻りますuidが、CAP_NET_BIND_SERVICE機能が追加されます。

答え2

1024 未満のポートをリダイレクトするには、ssh_user ではなく、pc1 (つまり 10.0.1.2) の root になる必要があります。

pc1 にログオンしている場合 (おそらく root として) ポート 83 をバインドできるため、pc1 から開始して ssh で s1 に接続する方が簡単かもしれません。ポート 83 をローカルにバインドするには、'-R' ではなく '-L' を使用します。

関連情報