GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit přesměrování vzdáleného portu na portu 80 k místnímu hostiteli s pomocí Setcap?

Když budu NATed, chtěl bych nakrátko přijmout připojení pro vývoj, a tak se pokouším udělat toto:

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

Což selhává, protože se snažím svázat port, který je příliš nízký:

Warning: remote port forwarding failed for listen port 80

Takže jsem zjistil, že mohu provést setcap 'cap_net_bind_service=+ep' /my/application abych mu umožnil naslouchat portům nižším než 1024. Takže v crontab suders mám toto:

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

Ale stále mi to nedovoluje navázat se na port 80. Co dělám špatně? Jen budu místo toho používat nginx k proxy na 8080 nebo iptables nebo tak něco, ale stále mě zajímá, proč to, o co jsem se snažil, nefungovalo.

Přijatá odpověď:

OpenSSH se zcela odmítne vázat na privilegované porty, pokud ID přihlášeného uživatele není 0 (root). Příslušné řádky kódu jsou:

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.");

Zdroj:http://www.openssh.com/cgi-bin/cvsweb/src/usr.bin/ssh/serverloop.c?annotate=1.162 řádky 1092-1098

Pokud jste zvědaví, pw je typu struct passwd * a na linuxu je definován v /usr/include/pwd.h


Linux
  1. Jak najít duplicitní soubory v Linuxu? Nápověda je zde s příkazem fdupes!

  2. Jak nastavit datum pomocí formátu Epoch?

  3. Linux – Jak připojit vzdálený souborový systém se zadáním čísla portu?

  1. SSH na jiný port než 22:Jak na to (s příklady)

  2. Jak zajistit, aby Localhost s jiným adresářem než index fungoval?

  3. Jak přejmenovat sadu souborů se vzorem?

  1. Jak nastavit SSH tunelování

  2. Jak změnit výchozí port vzdálené plochy (vnc)?

  3. Jak nastavit výchozí bránu