sshd
Mi objetivo es iniciar una segunda instancia en un puerto no privilegiado (por ejemplo, 2222) con mi propio archivo de configuración.
Obviamente, el sshd
proceso no puede setuid
iniciar sesión ya que los usuarios que no sean el que ejecuta el sshd
demonio son claramente imposibles.
Sin embargo, ¿es posible tener un sshd
demonio que funcione para el usuario que se está ejecutando actualmente? Para mi caso de uso, esto estaría bien.
Intenté arrancar una sshd
instancia con mi propio archivo de configuración y clave de host y el sshd
proceso se inicia (no tengo quejas de no ser root, como algunos comandos), sin embargo, cuando intento conectarme a ese puerto, el sshd
proceso muere.
$ /usr/sbin/sshd -dD -h .ssh/id_rsa -p 2222
debug1: sshd version OpenSSH_5.6p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: setgroups() failed: Operation not permitted
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-dD'
debug1: rexec_argv[2]='-h'
debug1: rexec_argv[3]='.ssh/id_rsa'
debug1: rexec_argv[4]='-p'
debug1: rexec_argv[5]='2222'
debug1: Bind to port 2222 on 0.0.0.0.
Server listening on 0.0.0.0 port 2222.
debug1: Bind to port 2222 on ::.
Server listening on :: port 2222.
debug1: fd 6 clearing O_NONBLOCK
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 6 out 6 newsock 6 pipe -1 sock 9
debug1: inetd sockets after dupping: 5, 5
Connection from ::1 port 57670
debug1: Client protocol version 2.0; client software version OpenSSH_5.6
debug1: match: OpenSSH_5.6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: list_hostkey_types:
No supported key exchange algorithms
debug1: do_cleanup
debug1: do_cleanup
debug1: audit_event: unhandled event 12
La debug1: setgroups() failed: Operation not permitted
línea obviamente sobresale, pero no muere hasta que intenta aceptar una conexión.
UsePam
enno
.Como una actualización de este hilo, OpenSSH en la versión 7.5 desaprobó la opción UsePrivilegeSeparation, lo que hace imposible deshabilitar la separación de privilegios. Parece que ejecutar SSHD como usuario ahora es imposible.
Ver https://www.openssh.com/releasenotes.html
fuente
He comprobado en detalle la posibilidad de ejecutar el servicio sshd como usuario normal. Detalle de la versión del programa:
Finalmente, después de resolver muchos errores, llegué al punto en que SSHD abortó con el siguiente error:
Verifiqué el código fuente para ver si es posible resolver el problema sin cambiar el código fuente. Mira el código aquí . Alguna parte del código que causa el aborto del programa:
Comprueba el privilegio del usuario
(geteuid() != 0)
y aquí causa el problema.fuente
Suponiendo lo que @magiclantern anotó anteriormente y asumiendo que no desea parchear,
sshd
¿funcionará algo como Dropbear para usted? Se utiliza en muchos dispositivos integrados que desean un servidor ssh con una huella más pequeña (y menos características / configuraciones).fuente
Aquí hay un sript bash de userland basado en la respuesta de Bo Jeanes que:
fuente