PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSH respawns too fast, disabled for 5 minutes



AndreasMeier
05.06.09, 10:05
Hallo zusammen,

am Server hab ich SSH laufen.
Damit SSH immer erreichbar ist, steht in der /etc/inittab folgendes:


ss: 12345:respawn: /usr/sbin/sshd -D

soll heißen, SSH wird neu gestartet, wenn SSH beendet wird.

Jetzt ist es allerdings so, dass mir die Logs von folgender Meldung zugeschüttet wird:


Jun *5 09:13:03 server sshd[21806]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jun *5 09:13:03 server sshd[21806]: fatal: Cannot bind any address.
Jun *5 09:13:03 server sshd[21807]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jun *5 09:13:03 server sshd[21807]: fatal: Cannot bind any address.
Jun *5 09:13:03 server sshd[21808]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jun *5 09:13:03 server sshd[21808]: fatal: Cannot bind any address.
Jun *5 09:13:03 server init: Id "ss" respawning too fast: disabled for 5 minutes


Da die Config von SSH selbst überprüft und richtig ist (ListenAddress :: auskommentiert etc.), liegt es doch irgendwie an der Zeile in der inittab, siehe auch hier (http://www.linux.org.za/Lists-Archives/glug-0003/msg00379.html).

Gibt es eine andere Möglichkeit als die inittab, den SSH am Leben zu halten, falls der beendet werden sollte?

Danke und Gruß
Andreas

HirschHeisseIch
05.06.09, 10:29
Hast Du die Seite, die Du verlinkt hast auch mal selbst gelesen?
Da steht doch, wo die Meldung her kommt...

Starte den sshd einfach über die rc-Scripte. Hat sich hier seit Jahren als praktikable Lösung bewährt. ;)
Wenn dem ganzen nicht genug vertraust, kannst noch nen Cron-Job anlegen, welcher regelmäßig überprüft, ob der sshd noch läuft und ihn ggf. neu startet.

AndreasMeier
05.06.09, 11:15
Na klar hab ich die Seite gelesen.
Mittlerweile hab ich den Eintrag aus der inittab auch entfernt und die Fehlermeldungen sind weg.
Server läuft unter Debian Etch. SSH wird beim Hochfahren auch gestartet.

Was ich allerdings noch nicht verstehe, ist der Zusammenhang zwischen den rc-runlevel und dem Überprüfen von SSH, ob dieser läuft.

Meines Erachtens wird doch in den rc-Skripten nur der Dienst gestartet, oder?
Wenn ja, dann ist das bereits der Fall.

Aber dort wird doch nicht überprüft, ob der Dienst läuft.
Aus dem Grund hatte ich irgendwann vor langer Zeit den Eintrag in die inittab vorgenommen.

Hast Du einen konkreten Vorschlag, wie der von Dir vorgeschlagene Cronjob aussehen müsste, um SSH wieder zu starten?

Danke und Gruß
Andreas

Rain_maker
05.06.09, 11:24
Anregung:

- Cronjob alle X Minuten, ruft ein kleines Script auf

- Script prüft (z.B. mit pidof), ob sshd läuft

- falls sshd läuft => mach nix

- falls sshd nicht läuft => restart mittels initscript

BedriddenTech
05.06.09, 11:26
Oh Mann, warum ist bisher eigentlich zu den wenigsten durchgedrungen, daß rc-Skripte keine bewährte Art ist, einen Dienst zu verwalten? Vielleicht, ihn zu starten, aber nicht, ihn am Leben zu halten. (Und selbst beim Starten und Stoppen sind die Dinger meistens unzuverlässig.)

TE, Du willst Daemontools ('http://cr.yp.to/daemontools.html') o. ä.

AndreasMeier
05.06.09, 11:55
Na, ich denk mal schon, dass ich das oben gesagt habe, dass die rc-Skripte zum Starten, nicht zum Überwachen da sind, wurde nur wieder etwas verunsichert.
Aber danke für die Klarstellung.

Ich probier gerade mit der Status-Überwachung im Webmin rum.
SSH hab ich hinzugefügt und bei


Wenn der überwachte Prozess beendet wird, starte

folgendes hinzugefügt:


/usr/sbin/sshd -D


Jetzt weiß ich bloss nicht, ob Webmin den Status so schon autom. kontrolliert, oder ob ich die zeitgesteuerte Überprüfung noch dazu brauche.

BedriddenTech
05.06.09, 12:10
/usr/bin/sshd -D startet immer den SSH-Server, und der wird sofort wieder sterben, wenn das rc-Skript auch noch im Runlevel mit drin ist.
Was spricht gegen die Daemontools?

AndreasMeier
05.06.09, 13:05
Theoretisch nix, nur dass dann halt noch ein Tool benötigt wird.
Ich wollte jetzt halt erstmal mit bereits vorhandenen Mitteln schauen und da hab ich die Webmin-Statusübersicht gefunden.