Ich verwende Mac OS X Server.app unter Yosemite und habe SSH für Benutzer mit den Standardeinstellungen in /etc/sshd_config
aktiviert ( Standardmäßig sind die Authentifizierung mit öffentlichem Schlüssel und Kennwort aktiviert). Ich muss jedoch den git
lokalen Benutzer so einschränken, dass er NUR über SSH Zugriff auf öffentliche Schlüssel hat.
Bei vollständiger Offenlegung aktiviert die Server.app einige zusätzliche Kerberos- und GSSAPI-Optionen (obwohl ich nicht 100% sicher bin, wie sich diese auf meine folgenden Fragen auswirken):
# Kerberos options
KerberosAuthentication yes
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes
# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
GSSAPIStrictAcceptorCheck yes
GSSAPIKeyExchange no
/etc/sshd_config
sagt folgendes:
# To disable tunneled clear text passwords both PasswordAuthentication and
# ChallengeResponseAuthentication must be set to "no".
Da dies ChallengeResponseAuthentication
jedoch in Übereinstimmungsanweisungen nicht zulässig ist, habe ich versucht, nur die Kennwortauthentifizierung zu deaktivieren:
Match User git
PasswordAuthentication no
Dies funktioniert nicht - ich konnte mich immer noch mit Benutzername / Passwort bei git@my.server anmelden :(
Das Hinzufügen KbdInteractiveAuthentication no
schien jedoch richtig zu funktionieren:
Match User git
PasswordAuthentication no
KbdInteractiveAuthentication no
Jetzt bekomme ich Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
beim Versuch mich ohne öffentlichen Schlüssel anzumelden. Dies scheint darauf hinzudeuten, dass es neben publickey noch Methoden gibt, die die Anmeldung des git
Benutzers ermöglichen (dh gssapi-keyex
und gssapi-with-mic
).
Es scheint ein besserer Ansatz zu sein, die Authentifizierungsmethode einfach auf Folgendes zu beschränken publickey
:
Match User git
AuthenticationMethods publickey
Dies gibt die Antwort `Berechtigung verweigert (publickey).
Fragen:
- Was ist der Unterschied zwischen
ChallengeResponseAuthentication
undKbdInteractiveAuthentication
? Warum istKbdInteractiveAuthentication
in Übereinstimmungsanweisungen erlaubt, aber nichtChallengeResponseAuthentication
? - Gibt es irgendwelche Nachteile / Sicherheitsbedenken bei dem
AuthenticationMethods publickey
Ansatz? - (Bonus, wenn Sie mir helfen können, zu verstehen
gssapi-keyex
/gssapi-with-mic
und wie sie sich auf die aktivierten GSSAPI / Kerberos-Optionen beziehen)
KbdInteractiveAuthentication
in Übereinstimmungsanweisungen erlaubt, aber nichtChallengeResponseAuthentication
? Sind das tatsächlich verschiedene Dinge oder ändert sich der Name nur innerhalb eines Übereinstimmungsblocks?