Zum Hauptinhalt springen

5. Authentication Requests (Authentifizierungsanfragen)

5. Authentication Requests (Authentifizierungsanfragen)

Alle Authentifizierungsanfragen MÜSSEN das folgende Nachrichtenformat verwenden. Nur die ersten Felder sind definiert; die übrigen Felder hängen von der Authentifizierungsmethode ab.

byte      SSH_MSG_USERAUTH_REQUEST
string user name in ISO-10646 UTF-8 encoding [RFC3629]
string service name in US-ASCII
string method name in US-ASCII
.... method specific fields

‚user name‘ und ‚service name‘ werden bei jedem neuen Authentifizierungsversuch wiederholt und KÖNNEN sich ändern. Die Serverimplementierung MUSS sie in jeder Nachricht sorgfältig prüfen und MUSS alle angesammelten Authentifizierungszustände leeren, wenn sie sich ändern. Wenn ein Authentifizierungszustand nicht geleert werden kann, MUSS die Verbindung getrennt werden, wenn sich ‚user name‘ oder ‚service name‘ ändert.

‚service name‘ gibt den nach der Authentifizierung zu startenden Dienst an. Es KANN mehrere verschiedene authentifizierte Dienste geben. Wenn der angeforderte Dienst nicht verfügbar ist, KANN der Server sofort oder zu einem späteren Zeitpunkt die Verbindung trennen. Das Senden einer ordnungsgemäßen Disconnect-Nachricht wird EMPFOHLEN. In jedem Fall DARF die Authentifizierung nicht akzeptiert werden, wenn der Dienst nicht existiert.

Wenn der angeforderte ‚user name‘ nicht existiert, KANN der Server die Verbindung trennen oder KANN eine fingierte Liste akzeptabler Authentifizierungs-‚method name‘-Werte senden, aber niemals eine akzeptieren. So KANN der Server vermeiden, Informationen darüber preiszugeben, welche Konten existieren. In jedem Fall DARF die Authentifizierungsanfrage nicht akzeptiert werden, wenn der ‚user name‘ nicht existiert.

Obwohl es für Clients meist wenig Sinn macht, Anfragen zu senden, die der Server nicht als akzeptabel auflistet, ist das Senden solcher Anfragen kein Fehler, und der Server SOLLTE solche Anfragen einfach ablehnen, die er nicht erkennt.

Eine Authentifizierungsanfrage KANN zu einem weiteren Nachrichtenaustausch führen. Alle solchen Nachrichten hängen vom verwendeten Authentifizierungs-‚method name‘ ab, und der Client KANN jederzeit mit einer neuen SSH_MSG_USERAUTH_REQUEST-Nachricht fortfahren; in diesem Fall MUSS der Server den vorherigen Authentifizierungsversuch aufgeben und mit dem neuen fortfahren.

Die folgenden ‚method name‘-Werte sind definiert.

Method nameRequirement
"publickey"REQUIRED
"password"OPTIONAL
"hostbased"OPTIONAL
"none"NOT RECOMMENDED

Zusätzliche ‚method name‘-Werte KÖNNEN wie in [SSH-ARCH] und [SSH-NUMBERS] angegeben definiert werden.