sshd scheitert bei reload mit legitimer Konfiguration

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
bitfreak
Beiträge: 28
Registriert: 10.10.2015 13:22:49

sshd scheitert bei reload mit legitimer Konfiguration

Beitrag von bitfreak » 20.12.2015 14:23:00

Hallo zusammen,

vor kurzem habe ich mich einmal etwas ausführlicher mit der Konfiguration meines ssh-server beschäftigt. Mein Ziel ist es, dass sich nur ein spezieller Rechner im Netzwerk mittels ssh verbinden darf und kein anderer überhaupt zur Passwortabfrage kommt.

Versucht habe ich das als aller erstes über die Konfigurationsdatei /etc/ssh/sshd_config . Allerdings lässt sich der ssh-Deamon nach der Konfiguration nicht mehr starten. Dabei habe ich folgende Zeile hinzugefügt: ListenAddress 192.168.178.39

Beim Neustart des Deamons über "service sshd reload" wird mir folgende Fehlermeldung ausgegeben

Code: Alles auswählen

Job for ssh.service failed. See 'systemctl status ssh.service' and 'journalctl -xn' for details.
Der Befehl "systemctl status ssh.service" gibt mir dabei als Ausgabe:

Code: Alles auswählen

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled)
   Active: failed (Result: start-limit) since So 2015-12-20 14:00:06 CET; 1min 50s ago
  Process: 2343 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=255)
 Main PID: 2343 (code=exited, status=255)

Dez 20 14:00:06 SERVER systemd[1]: ssh.service: main process exited, code=exited, status=255/n/a
Dez 20 14:00:06 SERVER systemd[1]: Unit ssh.service entered failed state.
Dez 20 14:00:06 SERVER systemd[1]: ssh.service start request repeated too quickly, refusing to start.
Dez 20 14:00:06 SERVER systemd[1]: Failed to start OpenBSD Secure Shell server.
Dez 20 14:00:06 SERVER systemd[1]: Unit ssh.service entered failed state.
Dez 20 14:00:06 SERVER systemd[1]: ssh.service start request repeated too quickly, refusing to start.
Dez 20 14:00:06 SERVER systemd[1]: Failed to start OpenBSD Secure Shell server.
und "journalctl -xn" bringt mir

Code: Alles auswählen

-- Logs begin at So 2015-12-20 13:03:25 CET, end at So 2015-12-20 14:00:06 CET. --
Dez 20 14:00:06 SERVER systemd[1]: Unit ssh.service entered failed state.
Dez 20 14:00:06 SERVER sshd[2343]: error: Bind to port 22 on 192.168.178.39 failed: Cannot assign requested address.
Dez 20 14:00:06 SERVER sshd[2343]: fatal: Cannot bind any address.
Dez 20 14:00:06 SERVER systemd[1]: ssh.service: main process exited, code=exited, status=255/n/a
Dez 20 14:00:06 SERVER systemd[1]: Unit ssh.service entered failed state.
Dez 20 14:00:06 SERVER systemd[1]: ssh.service start request repeated too quickly, refusing to start.
Dez 20 14:00:06 SERVER systemd[1]: Failed to start OpenBSD Secure Shell server.
-- Subject: Unit ssh.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit ssh.service has failed.
-- 
-- The result is failed.
Dez 20 14:00:06 SERVER systemd[1]: Unit ssh.service entered failed state.
Dez 20 14:00:06 SERVER systemd[1]: ssh.service start request repeated too quickly, refusing to start.
Dez 20 14:00:06 SERVER systemd[1]: Failed to start OpenBSD Secure Shell server.
-- Subject: Unit ssh.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit ssh.service has failed.
-- 
-- The result is failed.
Allerdings erscheint mir die eingestellte Konfiguration laut einigen Anleitungen im Netz plausibel und möglich. Siehe z.b. http://www.gtkdb.de/index_7_522.html .

Auch andere Schreibweisen, wie sie mir "man sshd_config" suggeriert funktionieren nicht, z.b. "ListenAddress CLIENT|192.168.178.39:22".

Komischerweise startet der Deamon erfolgreich, wenn ich "ListenAddress 0.0.0.0" verwende. Mache ich etwas falsch oder funktioniert hier wirklich etwas nicht so, wie es soll? Und: gibt es andere Möglichkeiten an mein Problem heranzugehen?

PS: Ich verwende Debian 8.2 Jessie, falls das von Relevanz ist.

mit freundlichen Grüßen
bitfreak

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: sshd scheitert bei reload mit legitimer Konfiguration

Beitrag von rendegast » 20.12.2015 16:01:22

"service sshd reload"
Beim
'service ssh reload'
gibt es entweder ein
' if start-stop-daemon --stop --signal 1 ... '
oder/resp.
'ExecReload=/bin/kill -HUP ...'

Wie ist es beim
'service ssh restart'
resp.
'systemctl restart ssh[.service]'
?

(Eine ssh-Session bleibt beim Killen des sshd erhalten,
daher kann ein Restart des Dienstes auch über ssh-Verbindung gemacht werden)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

JTH
Moderator
Beiträge: 3083
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: sshd scheitert bei reload mit legitimer Konfiguration

Beitrag von JTH » 20.12.2015 17:43:37

Bei deiner Beschreibung habe ich das Gefühl, dass du evtl. ListenAddress falsch herum verstanden hast. Die Option lässt den SSH-Server auf bestimmten (oder allen bei 0.0.0.0) Adressen des Rechners lauschen, auf dem der Server läuft. Du schränkst damit nicht ein, dass nur bestimmte entfernte Rechner mit den angegebenen Adressen auf den SSH-Server zugreifen können. Ich weiß nicht, ob das so überhaupt mit irgendeiner Option möglich ist.

Der Server lässt sich bei dir dann denke ich nicht mehr starten, weil auf dem Server kein Interface die angegebene Adresse hat:

Code: Alles auswählen

error: Bind to port 22 on 192.168.178.39 failed: Cannot assign requested address.
Manchmal bekannt als Just (another) Terminal Hacker.

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: sshd scheitert bei reload mit legitimer Konfiguration

Beitrag von eggy » 20.12.2015 18:01:52

Um Zugang zu Ports von bestimmten IP zuzulassen oder zu sperren nimmt man Iptables (oder bzw hosts-deny/-allow etc).

Beispiel für iptables wäre ungefähr das

Code: Alles auswählen

iptables -I INPUT --src 192.168.1.1 --proto tcp --dport 22 -j ACCEPT
iptables -I INPUT --src 192.168.1.2 --proto tcp --dport 22 -j ACCEPT
iptables -I INPUT --proto tcp --dport 22 -j REJECT
nicht getestet, evtl ist nen Buchstabendreher drin, aber der Ablauf sollte klar sein: erst zulassen von welchen Ips die Zugriffe ok sind, dann alles andere was von aussen durch den SSH Port will wegschicken.

mat6937
Beiträge: 3415
Registriert: 09.12.2014 10:44:00

Re: sshd scheitert bei reload mit legitimer Konfiguration

Beitrag von mat6937 » 20.12.2015 18:26:46

eggy hat geschrieben:Um Zugang zu Ports von bestimmten IP zuzulassen oder zu sperren nimmt man Iptables (oder bzw hosts-deny/-allow etc).
Oder die sshd_config. Z. B.:

Code: Alles auswählen

AllowUsers <user>@192.168.1.1 <user>@192.168.1.2
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: sshd scheitert bei reload mit legitimer Konfiguration

Beitrag von eggy » 20.12.2015 18:52:02

Viel zu offensichtlich ;)

bitfreak
Beiträge: 28
Registriert: 10.10.2015 13:22:49

Re: sshd scheitert bei reload mit legitimer Konfiguration

Beitrag von bitfreak » 20.12.2015 21:38:51

Hallo,
danke dass ihr euch mit der Thematik beschäftigt habt. Mit dem letzten Vorschlag "AllowUsers <user>@192.168.178.39" hat es nun doch geklappt und der Client kommt nur auf den Server, wenn diese entsprechende Zeile richtig hinzugefügt wurde.

@redegast
Ein service ssh restart wäre zum gleichen Ergebnis gekommen als ein service sshd reload. Von daher denke ich könnte man diese Fehlerquelle wohl ausschließen. Es ist wohl eher so, wie @JTH schreibt, dass ich den Sinn und Zweck von ListenAdress wohl falsch verstanden hab. Daher wird wohl auch das ListenAdress 0.0.0.0 funktioniert haben.

Die Möglichkeit mit den iptables ist mir bekannt, hab mich aber derzeit noch nicht soweit damit beschäftigt gehabt.

Antworten