4.2. Protocol Version Exchange (Échange de version de protocole)
4.2. Protocol Version Exchange (Échange de version de protocole)
Lorsque la connexion a été établie, les deux parties DOIVENT envoyer une chaîne d'identification. Cette chaîne d'identification DOIT être:
SSH-protoversion-softwareversion SP comments CR LF
Étant donné que le protocole défini dans cet ensemble de documents est la version 2.0, le protoversion DOIT être "2.0". La chaîne comments est OPTIONNELLE. Si la chaîne comments est incluse, un caractère d'espacement (indiqué ci-dessus comme SP, ASCII 32) DOIT séparer les chaînes softwareversion et comments. L'identification DOIT être terminée par un seul retour chariot (CR) et un seul caractère de saut de ligne (LF) (ASCII 13 et 10, respectivement). Les implémenteurs qui souhaitent maintenir la compatibilité avec les versions plus anciennes et non documentées de ce protocole peuvent vouloir traiter la chaîne d'identification sans attendre la présence du caractère de retour chariot pour les raisons décrites dans la section 5 de ce document. Le caractère nul NE DOIT PAS être envoyé. La longueur maximale de la chaîne est de 255 caractères, y compris le retour chariot et le saut de ligne.
La partie de la chaîne d'identification précédant le retour chariot et le saut de ligne est utilisée dans l'échange de clés Diffie-Hellman (voir section 8).
Le serveur PEUT envoyer d'autres lignes de données avant d'envoyer la chaîne de version. Chaque ligne DEVRAIT être terminée par un retour chariot et un saut de ligne. Ces lignes NE DOIVENT PAS commencer par "SSH-", et DEVRAIENT être encodées en ISO-10646 UTF-8 [RFC3629] (la langue n'est pas spécifiée). Les clients DOIVENT être capables de traiter ces lignes. Ces lignes PEUVENT être silencieusement ignorées, ou PEUVENT être affichées à l'utilisateur client. Si elles sont affichées, le filtrage des caractères de contrôle, tel que discuté dans [SSH-ARCH], DEVRAIT être utilisé. L'utilisation principale de cette fonctionnalité est de permettre aux enveloppeurs TCP d'afficher un message d'erreur avant de se déconnecter.
Les chaînes protoversion et softwareversion DOIVENT être composées de caractères US-ASCII imprimables, à l'exception des caractères d'espacement et du signe moins (-). La chaîne softwareversion est principalement utilisée pour déclencher des extensions de compatibilité et pour indiquer les capacités d'une implémentation. La chaîne comments DEVRAIT contenir des informations supplémentaires qui pourraient être utiles pour résoudre les problèmes des utilisateurs. Ainsi, un exemple de chaîne d'identification valide est:
SSH-2.0-billsSSH_3.6.3q3<CR><LF>
Cette chaîne d'identification ne contient pas la chaîne comments optionnelle et est donc terminée par un CR et LF immédiatement après la chaîne softwareversion.
L'échange de clés commencera immédiatement après l'envoi de cet identifiant. Tous les paquets suivant la chaîne d'identification DOIVENT utiliser le protocole de paquets binaires, qui est décrit dans la section 6.