SSH:リモートポート転送。 - 特権ポートバインディング

SSH:リモートポート転送。 - 特権ポートバインディング

非常に短くて基本的な質問です。 Web 課題に問題があります。これが私が実装するように求められたものです。

  • 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

ssh_userの代わりに1024未満のポートをリダイレクトするには、pc1(別名10.0.1.2)からルートである必要があります。

pc1にログインしている場合(おそらくrootとして)、ポート83をバインドできるため、pc1から起動してSSHを介してs1にアクセスするのが簡単になります。ポート83をローカルにバインドするには、-Rの代わりに-Lを使用してください。

関連情報