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 [email protected] 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)
quelle
KbdInteractiveAuthentication
in Übereinstimmungsanweisungen erlaubt, aber nichtChallengeResponseAuthentication
? Sind das tatsächlich verschiedene Dinge oder ändert sich der Name nur innerhalb eines Übereinstimmungsblocks?sshd_config
Manpage für Details)KbdInteractiveAuthentication
undChallengeResponseAuthentication
(und warum Match nur akzeptiertKbdInteractiveAuthentication
). Wenn Sie (oder jemand anderes) diese Antwort bearbeiten können, um weitere Details bereitzustellen, würde ich mich freuen.KbdInteractiveAuthentication
überhaupt nicht.Es ist mir nicht ganz klar, ob es einen Unterschied gibt, aber zumindest scheint ChallengeResponseAuthentication KbdInteractiveAuthentication zu erfordern. Es wird automatisch aktiviert, wenn Challenge-Response aktiviert ist.
Ich habe das Gefühl, dass sie während der SSH1-Ära eine Challenge-Response entwickelt haben. Es wurde als tastaturinteraktiv mit SSH2 standardisiert, aber die Serverkonfigurationsdatei wurde nicht sofort geändert, damit alte Konfigurationen weiterhin funktionieren.
Ich habe Folgendes in der OpenSH-Portable-Quelle gefunden (Stand 20181214).
sshd.c ab Zeile 1685:
sshconnect2.c ab Zeile 375:
quelle