¿Por qué ssh.service no se inicia automáticamente durante el arranque a pesar de estar habilitado por systemd?

¿Por qué ssh.service no se inicia automáticamente durante el arranque a pesar de estar habilitado por systemd?

Estoy usando Debian 11 en una Raspberry Pi 4 (imagen encontradaaquí). sshd está configurado correctamente (solo edité /etc/ssh/sshd_config, el resto está completamente recién instalado desde la instalación del sistema) y funciona correctamente cuando lo inicio manualmente. Sin embargo, no se inicia automáticamente mediante systemd en el arranque.sudo systemctl estado sshddevuelve esto:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:sshd(8)
             man:sshd_config(5)

No hay nada relacionado con ssh en la salida de journalctl.

Este es el contenido de/lib/systemd/system/ssh.servicio:

[Unit]
Description=OpenBSD Secure Shell server
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/usr/sbin/sshd -t
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
Alias=sshd.service

El archivosshd_not_to_be_runno existe.objetivo.redestá activo. También instalé auditd solo para solucionar problemas y se inicia automáticamente con éxito, pero ssh.service sigue inactivo después de reiniciar.

Me quedo sin ideas...


ACTUALIZAR:

Acabo de descubrir que se genera un proceso sshd en cada demanda de conexión. Es administrado por el propio systemd y está claramente impreso en el diario cuando algunas computadoras extranjeras intentan conectarse a la mía:

oct. 30 13:09:30 RaspServeur systemd[1]: Started OpenBSD Secure Shell server per-connection daemon (117.68.2.55:45784).
░░ Subject: L'unité (unit) [email protected]:22-117.68.2.55:45784.service a terminé son démarrage
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░ 
░░ L'unité (unit) [email protected]:22-117.68.2.55:45784.service a terminé son démarrage, avec le résultat done.
oct. 30 13:09:30 RaspServeur audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='[email protected]:22-117.68.2.55:45784 comm="systemd" exe="/usr/lib/systemd/systemd" ho>
oct. 30 13:09:33 RaspServeur sshd[1861]: error: kex_exchange_identification: Connection closed by remote host
oct. 30 13:09:33 RaspServeur sshd[1861]: Connection closed by 117.68.2.55 port 45784
oct. 30 13:09:33 RaspServeur systemd[1]: [email protected]:22-117.68.2.55:45784.service: Succeeded.
░░ Subject: Unit succeeded
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░ 
░░ The unit [email protected]:22-117.68.2.55:45784.service has successfully entered the 'dead' state.
oct. 30 13:09:33 RaspServeur audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='[email protected]:22-117.68.2.55:45784 comm="systemd" exe="/usr/lib/systemd/systemd" hos>

Es como si existiera una instalación paralela de sshd con una configuración predeterminada. Mi propia configuración con ajustes como un número de puerto específico para usar no puede funcionar sin iniciar manualmente sshd.service. Pero puedo conectarme exitosamente a ese Shadow sshd con el puerto predeterminado, yestado del sistemactl sshdtodavía informa un servicio muerto...

La situación se vuelve espeluznante, ahora estoy a dos dedos de borrar la tarjeta SD e instalar una imagen de otra distribución con menos preconfiguración.

Respuesta1

¿Podría ser este el mismo problema que el autor de la pregunta?pregunta #442181¿tenía? Es decir, sshd no se inicia en el arranque porque la interfaz/dirección a la que desea vincularse aún no está lista. Usted menciona que ha especificado un puerto no estándar para el socket del servidor, ¿también ha especificado una interfaz de red y/o dirección IP en particular?

Sin embargo, no sé por qué systemd inicia un demonio por conexión que usa la configuración estándar. Podría ser parte de la configuración predeterminada del sistema, como sugiere. Enpregunta #507705hablan de la "activación de socket" de systemd, que aparentemente es la característica que proporciona generación de servicios por conexión. Busque un archivo de unidad systemd llamado ssh.socket. Puede utilizarlo man systemd.socketpara obtener información sobre cómo funciona la función.

Editar: debería poder utilizarlo systemctl status ssh.socketpara comprobar si el socket del servidor SSH de systemd está habilitado.

Respuesta2

Si inicia sshd manualmente, systemd no lo registrará como iniciado, por lo que tiene sentido que systemctl no muestre nada. Cada sshd es realmente un proceso de escucha y después de que se ha establecido una conexión, se bifurca un proceso separado que se ocupa de esta conexión. Si es así, pshabrá varios procesos sshd que reflejen esto. Si elimina el sshd-listener, los otros procesos sshd que manejan las conexiones seguirán vivos.

Si inicia sshd y hace un systemctl, inicie sshd. Eso es el equivalente a iniciar 2 sshds, que pueden bloquearse si todos intentan usar el mismo puerto.

Espero que ayude

información relacionada