5. Authentication Requests (認証リクエスト)
すべての認証リクエストは、次のメッセージ形式を使用しなければなりません。最初のいくつかのフィールドのみが定義されており、残りのフィールドは認証方法に依存します。
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' と 'service name' は新しい認証試行ごとに繰り返され、変更される可能性があります。サーバー実装は、すべてのメッセージでそれらを注意深くチェックし、それらが変更された場合は、蓄積された認証状態をフラッシュしなければなりません。認証状態をフラッシュできない場合、'user name' または 'service name' が変更されたときに切断しなければなりません。
'service name' は、認証後に開始するサービスを指定します。いくつかの異なる認証済みサービスが提供される可能性があります。リクエストされたサービスが利用できない場合、サーバーはすぐに、または後のいつでも切断することができます。適切な切断メッセージを送信することが推奨されます。いずれにしても、サービスが存在しない場合、認証を受け入れてはなりません。
リクエストされたユーザーが存在しない場合、サーバーは切断するか、偽の許容される認証 'method name' 値のリストを送信する可能性がありますが、決して受け入れません。これにより、サーバーはどのアカウントが存在するかに関する情報の開示を避けることができます。いずれにしても、'user name' が無効であるか、サーバー側の構成で許可されていない場合、サーバーはアクセスを許可してはなりません。
'method name' フィールドは、クライアントが使用したい認証方法をサーバーに伝えます。方法に応じて、残りのフィールドは空であるか、方法固有のデータを含む可能性があります。