Anmeldung per SSH-Key nicht möglich wenn der home-Ordner auf einem NFS-Share liegt
Aus znilwiki
ChangeLog:
- 24.06.2024 erste Version
Vorwort
Das hat mich gerade über 3h Stunden gekostet.
Eine Software eines Kunden in einer Serverfarm benutzt passwortlose SSH-Anmeldungen um Prozesse auf diversen Servern unter einem bestimmten Benutzer zu starten.
Und der Hersteller möchte das auf allen Servern das identische Profil verwendet wird. Weshalb es auf dem Master-Knoten als NFS-Share frei gegeben ist und alle Worker-Knoten dieses in das Home-Verzeichnis des Benutzers gemountet haben (Benutzer hat überall die gleiche UID/GID).
Aber auf einem Knoten klappt das Passwortlose SSH-Login nicht, er wollte immer das Passwort.
Bis ich endlich mal die richtige Frage bei Google gestellt habe, die Lösung fand ich hier:
Es liegt an SELinux!
Prüfen ob es an SELinux liegt
Testet diesen Befehl:
getsebool use_nfs_home_dirs
Beispielausgabe 1 => Ihr habt das Problem gefunden:
use_nfs_home_dirs --> off
Bedeutet das SELinux aktiv ist und dieser Parameter die Ausführung verhindert.
Ist SELinux deaktiviert kommt die folgende Ausgabe:
getsebool: SELinux is disabled
Dann liegt es vermutlich an falschen Veruechnis und Dateirechten, das Verzeichnis des Benutzers muss
chmod 700 .ssh
sein, die authorized_keys Datei darf nur für den Besitzer rw sein:
chmod 600 .ssh/authorized_keys
Es liegt an SELinux - Lösung 1
Setzt den Parameter das die Verwendung von NFS Shares erlaubt wird:
setsebool -P use_nfs_home_dirs 1
Das funktioniert dann unmittelbar und ohne Neustart!
Es liegt an SELinux - Lösung 2
Variante 2 ist das wir SELinux ganz deaktivieren:
nano /etc/selinux/config
und die Datei wie folgt ändern:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are$
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
Speichern und den Server neu starten!