SSH- und Basisverzeichnisberechtigungen

53

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?

action_potato
quelle
1
Bestätigt die Antworten unten; Das Problem war, dass die Gruppenberechtigungen für den Basisordner falsch festgelegt wurden (die Fehlermeldung aus auth.log lautete: 'Authentifizierung abgelehnt: falscher Besitz oder Modi für Verzeichnis / home / <Benutzer>'). Ich sehe, dass SSH zu Recht wählerisch in Bezug auf die Zugriffsrechte ist.
action_potato
5
Wussten Sie über die Tag-Wikis Bescheid, die wir hier haben? Wenn Sie auf ssh und dann klicken 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.
Gilles 'SO- hör auf böse zu sein'
Tut mir leid, dass ich nichts davon wusste! Danke für die Warnung.
action_potato

Antworten:

54

Dies ist das Standardverhalten für SSH. Es schützt Benutzerschlüssel durch die Durchsetzung rwx------auf $HOME/.sshund 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 $HOMEVerzeichnis verfügt, kann er die Berechtigungen in böswilliger Weise ändern $HOME/.sshund möglicherweise die Benutzerschlüssel known_hostsoder ähnliches entführen . Zusammenfassend sind die folgenden Berechtigungen $HOMEfü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+woder o+wvorhanden ist $HOME. Der Administrator kann dieses Verhalten jedoch außer Kraft setzen, indem er es StrictModes noin der sshd_config(oder einer ähnlichen) Konfigurationsdatei definiert. Es sollte jedoch klar sein, dass dies nicht empfohlen wird .

George M
quelle
1
Danke für die Erwähnung 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.
Intelfx
31

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.

jippie
quelle