GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo configurar un reenvío de puerto remoto en el puerto 80 al host local con la ayuda de Setcap?

Me gustaría aceptar conexiones brevemente para el desarrollo cuando estoy en NAT, por lo que intento hacer esto:

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

Lo que falla porque estoy tratando de vincular un puerto que es demasiado bajo:

Warning: remote port forwarding failed for listen port 80

Así que descubrí que puedo hacer setcap 'cap_net_bind_service=+ep' /my/application para permitirle escuchar puertos inferiores a 1024. Así que tengo esto en mi crontab de Suders:

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

Pero todavía no me permite enlazar en el puerto 80. ¿Qué estoy haciendo mal? Voy a usar nginx como proxy a 8080 o iptables o algo así, pero aún tengo curiosidad por saber por qué lo que estaba tratando de hacer no funcionó.

Respuesta aceptada:

OpenSSH se negará rotundamente a vincularse a puertos privilegiados a menos que la identificación de usuario del usuario que inició sesión sea 0 (raíz). Las líneas de código relevantes son:

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

Fuente:http://www.openssh.com/cgi-bin/cvsweb/src/usr.bin/ssh/serverloop.c?annotate=1.162 líneas 1092-1098

Si tienes curiosidad, pw es de tipo struct passwd * y en Linux se define en /usr/include/pwd.h


Linux
  1. Cómo configurar túneles SSH

  2. ¿Cómo encontrar archivos duplicados en Linux? ¡La ayuda está aquí con el comando fdupes!

  3. ¿Cómo configurar la fecha con el formato de época?

  4. ¿Cómo cambiar el puerto predeterminado de escritorio remoto (vnc)?

  5. ¿Cómo configurar el túnel ssh para reenviar ssh?

Cómo hacer un procesamiento de imágenes por lotes en Linux Destop con XnConvert

Cómo configurar un cortafuegos con GUFW en Linux

Cómo configurar el nombre de host bonito

Cómo configurar un repositorio git con Plesk

Cómo cambiar el puerto SSH en CentOS

Cómo configurar el cortafuegos UFW en Linux