Ich verwende Mac OS X Server.app unter Yosemite und habe SSH für Benutzer mit den Standardeinstellungen in /etc/sshd_configaktiviert ( Standardmäßig sind die Authentifizierung mit öffentlichem Schlüssel und Kennwort aktiviert). Ich muss jedoch den gitlokalen 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 ChallengeResponseAuthenticationjedoch 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 noschien 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 gitBenutzers ermöglichen (dh gssapi-keyexund 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
ChallengeResponseAuthenticationundKbdInteractiveAuthentication? Warum istKbdInteractiveAuthenticationin Übereinstimmungsanweisungen erlaubt, aber nichtChallengeResponseAuthentication? - Gibt es irgendwelche Nachteile / Sicherheitsbedenken bei dem
AuthenticationMethods publickeyAnsatz? - (Bonus, wenn Sie mir helfen können, zu verstehen
gssapi-keyex/gssapi-with-micund wie sie sich auf die aktivierten GSSAPI / Kerberos-Optionen beziehen)
KbdInteractiveAuthenticationin Übereinstimmungsanweisungen erlaubt, aber nichtChallengeResponseAuthentication? Sind das tatsächlich verschiedene Dinge oder ändert sich der Name nur innerhalb eines Übereinstimmungsblocks?