10. Service Request
10. Service Request
After the key exchange, the client requests a service. The service is identified by a name. The format of names and procedures for defining new names are defined in [SSH-ARCH] and [SSH-NUMBERS].
Currently, the following names have been reserved:
ssh-userauth
ssh-connection
Similar local naming policy is applied to the service names, as is applied to the algorithm names. A local service should use the PRIVATE USE syntax of "servicename@domain".
byte SSH_MSG_SERVICE_REQUEST
string service name
If the server rejects the service request, it SHOULD send an appropriate SSH_MSG_DISCONNECT message and MUST disconnect.
When the service starts, it may have access to the session identifier generated during the key exchange.
If the server supports the service (and permits the client to use it), it MUST respond with the following:
byte SSH_MSG_SERVICE_ACCEPT
string service name
Message numbers used by services should be in the area reserved for them (see [SSH-ARCH] and [SSH-NUMBERS]). The transport level will continue to process its own messages.
Note that after a key exchange with implicit server authentication, the client MUST wait for a response to its service request message before sending any further data.