Warum wird ssh.service beim Booten nicht automatisch gestartet, obwohl es von systemd aktiviert wurde?

Warum wird ssh.service beim Booten nicht automatisch gestartet, obwohl es von systemd aktiviert wurde?

Ich verwende Debian 11 auf einem Raspberry Pi 4 (Bild gefundenHier). sshd ist richtig konfiguriert (ich habe nur /etc/ssh/sshd_config bearbeitet, der Rest ist komplett neu von der Systeminstallation) und funktioniert einwandfrei, wenn ich es manuell starte. Es wird jedoch nicht automatisch von systemd beim Booten gestartet.sudo systemctl status sshdgibt Folgendes zurück:

● 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)

Die Ausgabe von Journalctl enthält keinen Bezug zu SSH.

Dies ist der Inhalt von/lib/systemd/system/ssh.service:

[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

Die Dateisshd_darf_nicht_ausgeführt_werdenist nicht vorhanden.Netzwerkzielist aktiv. Ich habe auditd auch nur zur Fehlerbehebung installiert und es startet erfolgreich automatisch, aber ssh.service ist nach dem Neustart immer noch tot.

Mir gehen die Ideen aus …


AKTUALISIEREN:

Ich habe gerade entdeckt, dass bei jeder Verbindungsanforderung ein SSHD-Prozess gestartet wird. Er wird von systemd selbst verwaltet und es wird deutlich im Journal gedruckt, wenn einige fremde Computer versuchen, eine Verbindung zu meinem herzustellen:

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 ist, als ob eine parallele Installation von sshd mit einer Standardkonfiguration existiert. Meine eigene Konfiguration mit Einstellungen wie einer bestimmten zu verwendenden Portnummer kann nicht funktionieren, ohne den sshd.service manuell zu starten. Aber ich kann mich erfolgreich mit diesem Shadow-sshd mit dem Standardport verbinden undsystemctl status sshdmeldet immer noch einen toten Dienst …

Die Situation wird unheimlich, ich bin jetzt nur noch zwei Finger davon entfernt, die SD-Karte zu löschen und ein Image einer anderen Distribution mit weniger Vorkonfiguration zu installieren.

Antwort1

Könnte dies das gleiche Problem sein wie das des Fragestellers?Frage Nr. 442181hatte? D. h. SSHD kann beim Booten nicht gestartet werden, da die Schnittstelle/Adresse, an die es gebunden werden soll, noch nicht bereit ist. Sie erwähnen, dass Sie einen nicht standardmäßigen Port für den Server-Socket angegeben haben. Haben Sie auch eine bestimmte Netzwerkschnittstelle und/oder IP-Adresse angegeben?

Ich weiß allerdings nicht, warum systemd stattdessen einen Daemon für jede Verbindung startet, der die Standardkonfiguration verwendet. Es könnte Teil der Standardsystemkonfiguration sein, wie Sie vorschlagen. InFrage Nr. 507705Sie sprechen über die „Socket-Aktivierung“ von systemd, was anscheinend die Funktion ist, die das Erstellen von Diensten pro Verbindung ermöglicht. Suchen Sie nach einer systemd-Unit-Datei mit dem Namen ssh.socket. Sie können verwenden, man systemd.socketum Informationen zur Funktionsweise der Funktion zu erhalten.

Bearbeiten: Sie sollten damit überprüfen können, systemctl status ssh.socketob der SSH-Server-Socket von systemd aktiviert ist.

Antwort2

Wenn Sie sshd manuell starten, wird systemd dies nicht als gestartet registrieren, daher ist es verständlich, dass systemctl nichts anzeigt. Jeder sshd ist eigentlich ein Abhörprozess und nachdem eine Verbindung hergestellt wurde, wird ein separater Prozess, der diese Verbindung verarbeitet, gegabelt. Wenn Sie dies pstun, wird es mehrere sshd-Prozesse geben, die dies widerspiegeln. Wenn Sie den sshd-Listener beenden, bleiben die anderen sshd-Prozesse, die Verbindungen verarbeiten, aktiv.

Wenn Sie SSHD starten und ein „systemctl start sshd“ ausführen, entspricht dies dem Starten von zwei SSHDs, was zu einer Blockierung führen kann, wenn alle versuchen, denselben Port zu verwenden.

Ich hoffe, das hilft

verwandte Informationen