Wir verwenden CentOS 6.9 mit OpenSSH_5.3p1 und haben Chroot-Konten für externe Benutzer mit demselben Home-Verzeichnis (eingebunden in htdocs) erstellt. Das Problem ist, dass die Datei .ssh/authorized_keys2
dem ersten Benutzer gehört (und das funktioniert bereits). Wie kann ich es für einen anderen Benutzer zum Laufen bringen?
AuthorizedKeysFile
Ich habe versucht, eine in sshd_config mit mehreren Dateipfaden hinzuzufügen und habe den Fehler erhalten garbage at end of line
.
Ich habe versucht , im Match-Block des zweiten Benutzers ein AuthorizedKeysFile
In hinzuzufügen und habe den Fehler erhalten .sshd_config
'AuthorizedKeysFile' is not allowed within a Match block
Das Home-Verzeichnis kann ich nicht ändern, da sonst der Pfad vom tatsächlichen Pfad für die Entwicklung abweicht.
Irgendwelche Vorschläge, wie man das Problem lösen kann? Muss ich OpenSSH möglicherweise auf eine neuere Version aktualisieren, die mehrere Einträge unterstützt AuthorizedKeysFile
(ich glaube, ich muss es mit rpm erstellen)? Was ist mit den Sicherheitsupdates danach?
Antwort1
Eine Möglichkeit besteht darin, Token zu verwenden, um jedem Benutzer eine einzigartige authorized_keys
Datei zu geben.
Ausman sshd_config:
AuthorizedKeysFile
Gibt die Datei an, die die öffentlichen Schlüssel enthält, die zur Benutzerauthentifizierung verwendet werden können. Das Format wird im Abschnitt AUTHORIZED_KEYS-DATEIFORMAT von beschrieben
sshd(8)
.AuthorizedKeysFile
kann Token der Form enthalten%T
, die beim Verbindungsaufbau ersetzt werden. Die folgenden Token sind definiert:%%
wird durch ein Literal ersetzt%
,%h
wird durch das Home-Verzeichnis des zu authentifizierenden Benutzers ersetzt und%u
wird durch den Benutzernamen des Benutzers ersetzt. Nach der ErweiterungAuthorizedKeysFile
wird als absoluter Pfad oder relativ zum Home-Verzeichnis des Benutzers angesehen. Es können mehrere Dateien aufgelistet werden, getrennt durch Leerzeichen. Alternativ kann diese Option auf gesetzt werden,none
um die Überprüfung auf Benutzerschlüssel in Dateien zu überspringen. Der Standardwert ist.ssh/authorized_keys .ssh/authorized_keys2
.
Hervorhebung von mir.
Sie können also Folgendes einstellen:
AuthorizedKeysFile .ssh/%u_authorized_keys
Erstellen Sie dann foo
eine authorized_keys
Datei für den Benutzer .ssh/foo_authorized_keys
.
Ein Hinweis zu Berechtigungen
AusMann sshd:
~/.ssh/authorized_keys
...
Wenn diese Datei, das~/.ssh
Verzeichnis oder das Home-Verzeichnis des Benutzers für andere Benutzer beschreibbar sind, könnte die Datei von nicht autorisierten Benutzern geändert oder ersetzt werden. In diesem Fall lässt sshd die Verwendung nicht zu, es sei denn, dieStrictModes
Option wurde auf gesetztno
.
Sie müssen Ihre Schlüssel also möglicherweise außerhalb von platzieren .ssh/
oder StrictModes
auf setzen no
. Wenn Sie auf setzen, StrictModes
stellen no
Sie sicher, dass ein anderer Benutzer keinen authorized_keys
für jemand anderen erstellen oder die autorisierten Schlüssel des anderen Benutzers löschen kann. Am besten gehen Sie wahrscheinlich so vor:
AuthorizedKeysFile .ssh_%u/authorized_keys
Erstellen Sie ein Verzeichnis .ssh_foo/
für den Benutzer foo
, der nur foo
lesen/schreiben kann.
Sie können wählen, ob Sie auch zulassen möchten, .ssh/authorized_keys
indem Sie
AuthorizedKeysFile .ssh/authorized_keys .ssh_%u/authorized_keys
Dadurch funktioniert die „normale“ Form authorized_keys
weiterhin. Eine authorized_keys
Datei muss Ihrem Benutzer gehören und über die richtigen Berechtigungen verfügen, sonst wird sie ignoriert. Bedenken Sie jedoch, dass es nicht möglich sein sollte, eine authorized_keys
Datei für einen anderen Benutzer zu erstellen. Dies könnte einfach bedeuten, die Datei als Root zu bearbeiten, damit sie leer ist.