
非常に短く基本的な質問ですが、ネットワークの宿題で困っています。実装を求められているポイントは次のとおりです。
- 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' を使用します。