Ich habe Stunden gebraucht, um dieses SSH-Problem mit einem meiner Klassenkonten auf den Servern meiner Schule zu lösen.
Ich konnte nicht in ein bestimmtes Klassenkonto sshen, ohne mein Passwort einzugeben, während die passwortlose Authentifizierung mit meinen anderen Klassenkonten funktionierte. Das Verzeichnis .ssh / und sein gesamter Inhalt hatten dieselben korrekten Berechtigungen wie die anderen Klassenkonten.
Es stellte sich heraus, dass das Problem bei den Berechtigungen lag, die für mein eigenes Basisverzeichnis festgelegt wurden. Die kennwortlose Authentifizierung funktionierte nicht, wenn die Berechtigungen für mein HOME-Verzeichnis auf 770 festgelegt waren (unabhängig von den für .ssh / festgelegten Berechtigungen), aber sie funktionierte mit Berechtigungen, die auf 755 oder 700 festgelegt waren.
Weiß jemand warum SSH das macht? Liegt es daran, dass die Berechtigungen für das Basisverzeichnis zu zulässig sind? Warum weigert sich SSH, sich mit den öffentlichen / privaten Schlüsseln zu authentifizieren, wenn das Basisverzeichnis mehr als 700 zulässt?
quelle
learn more
, wird eine Checkliste angezeigt, die angibt, was zu tun ist, wenn SSH nicht funktioniert, und es werden die Berechtigungen für das Basisverzeichnis aufgeführt.Antworten:
Dies ist das Standardverhalten für SSH. Es schützt Benutzerschlüssel durch die Durchsetzung
rwx------
auf$HOME/.ssh
und gewährleistet nur der Eigentümer zu Schreibrechte hat$HOME
. Wenn ein anderer Benutzer als der jeweilige Eigentümer über eine Schreibberechtigung für das$HOME
Verzeichnis verfügt, kann er die Berechtigungen in böswilliger Weise ändern$HOME/.ssh
und möglicherweise die Benutzerschlüsselknown_hosts
oder ähnliches entführen . Zusammenfassend sind die folgenden Berechtigungen$HOME
für ausreichend, damit SSH funktioniert.rwx------
rwxr-x---
rwxr-xr-x
SSH funktioniert nicht ordnungsgemäß und sendet Warnungen an die Protokollfunktionen, wenn das Verzeichnis abweicht
g+w
odero+w
vorhanden ist$HOME
. Der Administrator kann dieses Verhalten jedoch außer Kraft setzen, indem er esStrictModes no
in dersshd_config
(oder einer ähnlichen) Konfigurationsdatei definiert. Es sollte jedoch klar sein, dass dies nicht empfohlen wird .quelle
StrictModes no
. In meinem Setup ist eine ACL für das Ausgangsverzeichnis des Zielbenutzers und für alle Nachkommen konfiguriert, um Änderungen durch einen halbprivilegierten Benutzer (u:operator:rwx
) zuzulassen , und SSH hat dies nicht gefallen.77x in Ihrem Home-Verzeichnis bedeutet, dass jeder mit korrekter GID Ihr .ssh-Verzeichnis verschieben und durch ein anderes ersetzen kann. Benutzer mit der richtigen GID haben Schreib- / Ausführungsberechtigungen für das Basisverzeichnis und können daher Dateien / Verzeichnisse umbenennen / erstellen.
SSH ist sehr wählerisch, wenn es um Berechtigungen geht, und das sollte es auch.
quelle