Ssh login ohne Passwort

german

#1

Hallo zusammen,

ich möchte als User nagios auf rechner A über ssh eine Abfrage als User Nagios auf Rechner B (UCS Memberserver) ausfführen.
Das ganze hat schon mal kurz funktioniert, seit einem reboot von Rechner B aber nicht mehr. Er fragt trotz vorhanden Schlüssel nach dem Passwort. Nur bei User root scheint es ohne Passwort zu funktionieren.
In der Dokumentation habe ich den Hinweis auf die UCR-Variable auth/sshd gefunden, ob und wie das die Lösung ist verstehe ich leider nicht.
kann mir bitte jemand auf die Sprünge helfen?

Gruß

Thomas


#2

Moin,

es gibt hier zwei verschiedenen Dinge zu beachten: die Frage, ob SSH generell Logins für diesen User zulässt, sowie der Schlüsselaustausch & Verzeichnis-/Dateirechte auf Quell- und Zielsystemen.

Fangen wir mit Punkt 1 an. Dies ist das, wo die UCR-Variablen ins Spiel kommen. Auf dem Zielsystem muss der User, mit dem man sich anmelden möchte (also der User, der auf dem Zielsystem existiert — hier »nagios«), zugelassen werden. Dafür gibt’s drei Möglichkeiten (von der spezifischsten zur allgemeinsten):

[ol][li]Man lässt explizit diesen einen User zu: dazu Variable »auth/sshd/user/nagios« auf Wert »yes« setzen.[/li]
[li]Man lässt eine Gruppe zu, in der der User Mitglied ist: dazu die Variable »auth/sshd/user/gruppenname« auf Wert »yes« setzen. Natürlich den tatsächlichen Gruppennamen eintragen.[/li]
[li]Man deaktiviert diese Prüfung, weil man ssh generell allen Usern/Gruppen erlauben möchte: dazu die Variable »auth/sshd/restrict« auf den Wert »no« setzen[/li][/ol]

Eventuell danach den SSH-Dienst neu starten: »service sshd restart«

Ist das erledigt, so wendet man sich der Frage zu, ob die Verzeichnis- und Dateirechte stimmen:

[ul][li]Auf dem Quellsystem: ~nagios/.ssh muss User nagios gehören[/li]
[li]Auf dem Quellsystem: ~nagios/.ssh darf nur für Besitzer beschreibbar sein, nicht aber für Gruppe und andere[/li]
[li]Auf dem Quellsystem: ~nagios/.ssh/id_rsa (oder welcher privater Schlüssel auch immer verwendet wird) muss User nagios gehören[/li]
[li]Auf dem Quellsystem: ~nagios/.ssh/id_rsa (oder welcher privater Schlüssel auch immer verwendet wird) darf nur für Besitzer lesbar sein; Gruppe und andere dürfen keinerlei Rechte haben[/li]
[li]Auf dem Zielsystem: ~nagios/.ssh muss User nagios gehören[/li]
[li]Auf dem Zielsystem: ~nagios/.ssh darf nur für Besitzer beschreibbar sein, nicht aber für Gruppe und andere[/li]
[li]Auf dem Zielsystem: ~nagios/.ssh/authorized_keys muss User nagios gehören[/li]
[li]Auf dem Zielsystem: ~nagios/.ssh/authorized_keys darf nur für Besitzer schreibbar sein[/li][/ul]

Was ausgetauscht werden muss: der Inhalt von ~nagios/.ssh/id_rsa.pub vom Quellsystem muss auf dem Zielsystem in ~nagios/.ssh/authorized_keys eingetragen werden. Dabei muss man darauf achten, dass der Inhalt auch weiterhin in einer einzigen Zeile verbleibt! Die ist sehr lang, darf auf keinen Fall mittendrin umgebrochen werden.

Wie debuggt man, was genau kaputt ist?

[ul][li]Berechtigungsproblemen auf dem Quellsystem kommt man auf die Schliche, indem man ssh mit höherer Verbosity (mehrere Parameter »-v« anhängen).[/li]
[li]Berechtigungsprobleme auf dem Zielsystem manifestieren sich in Fehlermeldungen in der Datei »/var/log/auth.log«. Das betrifft sowohl die Frage, ob der User sich generell einloggen darf (das sind die UCR-Variablen oben), als auch ob die Verzeichnis- und Dateirechte stimmen.[/li][/ul]

Viel Erfolg :slight_smile:

Gruß,
mosu


#3

Hallo Mosu,

vielen Dank für die ausführliche Antwort.

[quote=“Moritz Bunkus”]Moin,

es gibt hier zwei verschiedenen Dinge zu beachten: die Frage, ob SSH generell Logins für diesen User zulässt, sowie der Schlüsselaustausch & Verzeichnis-/Dateirechte auf Quell- und Zielsystemen.

Fangen wir mit Punkt 1 an. Dies ist das, wo die UCR-Variablen ins Spiel kommen. Auf dem Zielsystem muss der User, mit dem man sich anmelden möchte (also der User, der auf dem Zielsystem existiert — hier »nagios«), zugelassen werden. Dafür gibt’s drei Möglichkeiten (von der spezifischsten zur allgemeinsten):

[ol][li]Man lässt explizit diesen einen User zu: dazu Variable »auth/sshd/user/nagios« auf Wert »yes« setzen.[/li]
[li]Man lässt eine Gruppe zu, in der der User Mitglied ist: dazu die Variable »auth/sshd/user/gruppenname« auf Wert »yes« setzen. Natürlich den tatsächlichen Gruppennamen eintragen.[/li]
[li]Man deaktiviert diese Prüfung, weil man ssh generell allen Usern/Gruppen erlauben möchte: dazu die Variable »auth/sshd/restrict« auf den Wert »no« setzen[/li][/ol]
[/quote]

Ok, hier wird es eigenartig. Ohne eine dieser Variablen zu setzen kann ichmich über ssh anmelden. Laut Doku kann das aber nur root und Domänen Admins. Deshalb dachte ich hätte es falsch verstanden.
Auf einem 2. System konnte ich den folgenden Effekt reproduzieren:
Anmeldung als user nagios ohne Passwort einrichten, Test erfolgreich. Rechner reboot, ssh verlangt Password.
Ich habe jetzt auth/sshd/restrict« auf »no« gesetzt.Das ergab keine Veränderung.
In der auth.log finde ich trotz loglevel DEBUG3 (sshd) keinen Hinweis warum der Schlüssel nicht akzeptiert wird.

Ich habe alles mit meinem DC Backup getestet. Hier funktioniert alles wie erwartet, auch nachdem reboot.

Ich verstehe das nicht. Woran kann es noch liegen?

Gruß
Thomas


#4

Moin,

falsche IP/Rechnername als Ziel?

Paste doch bitte mal die Ausgabe der folgenden Befehle vom Zielserver: »ucr search --brief auth/ssh«, »cat /etc/pam.d/sshd« und »cat /etc/security/access-sshd.conf«.

Dann weiterhin bitte mal die auth.log von einem fehlgeschlagenen Loginversuch hier anhängen (auch wieder vom Zielsystem).

Gruß,
mosu