GNU/Linux >> Linux の 問題 >  >> Linux

Setcapを使用して、ポート80でローカルホストに転送するリモートポートを設定するにはどうすればよいですか?

NATを使用しているときに、開発のために接続を簡単に受け入れたいので、これを実行しようとしています:

$ ssh [email protected] -R 80:localhost:80

低いポートをバインドしようとしているため、これは失敗します:

Warning: remote port forwarding failed for listen port 80

そのため、setcap 'cap_net_bind_service=+ep' /my/applicationを実行できることがわかりました。 1024未満のポートをリッスンできるようにします。したがって、これはsuderscrontabにあります。

@reboot setcap 'cap_net_bind_service=+ep' /usr/sbin/sshd

しかし、それでもポート80にバインドできません。何が間違っているのでしょうか。代わりにnginxを使用して8080やiptablesなどにプロキシしますが、それでも、自分がやろうとしていたことがうまくいかなかった理由に興味があります。

承認された回答:

ログインしたユーザーのユーザーIDが0(ルート)でない限り、OpenSSHは特権ポートへのバインドを完全に拒否します。関連するコード行は次のとおりです。

if (!options.allow_tcp_forwarding ||
    no_port_forwarding_flag ||
    (!want_reply && listen_port == 0) ||
    (listen_port != 0 && listen_port < IPPORT_RESERVED &&
    pw->pw_uid != 0)) {
        success = 0;
        packet_send_debug("Server has disabled port forwarding.");

出典:http://www.openssh.com/cgi-bin/cvsweb/src/usr.bin/ssh/serverloop.c?annotate=1.162行1092-1098

興味がある場合は、pw タイプはstruct passwd * Linuxでは/usr/include/pwd.hで定義されています


Linux
  1. Linuxで重複ファイルを見つける方法は? fdupesコマンドのヘルプがここにあります!

  2. エポックフォーマットで日付を設定する方法は?

  3. インデックスとは異なるディレクトリを持つローカルホストを機能させる方法は?

  1. リモートデスクトップ(vnc)のデフォルトポートを変更するにはどうすればよいですか?

  2. デフォルトゲートウェイの設定方法

  3. ssh を転送するように ssh トンネルをセットアップするには?

  1. 22以外のポートへのSSH:それを行う方法(例付き)

  2. SSHトンネリングを設定する方法

  3. iptables でポート転送するにはどうすればよいですか?