Passa al contenuto principale

4.2. Protocol Version Exchange (Scambio di versione del protocollo)

4.2. Protocol Version Exchange (Scambio di versione del protocollo)

Quando la connessione è stata stabilita, entrambe le parti DEVONO inviare una stringa di identificazione. Questa stringa di identificazione DEVE essere:

SSH-protoversion-softwareversion SP comments CR LF

Poiché il protocollo definito in questo insieme di documenti è la versione 2.0, la protoversion DEVE essere "2.0". La stringa comments è OPZIONALE. Se la stringa comments è inclusa, un carattere spazio (indicato sopra come SP, ASCII 32) DEVE separare le stringhe softwareversion e comments. L'identificazione DEVE essere terminata da un singolo carattere di ritorno a capo (CR) e un singolo carattere di avanzamento riga (LF) (rispettivamente ASCII 13 e 10). Gli implementatori che desiderano mantenere la compatibilità con versioni più vecchie e non documentate di questo protocollo potrebbero voler elaborare la stringa di identificazione senza aspettarsi la presenza del carattere di ritorno a capo per i motivi descritti nella sezione 5 di questo documento. Il carattere nullo NON DEVE essere inviato. La lunghezza massima della stringa è di 255 caratteri, inclusi il ritorno a capo e l'avanzamento riga.

La parte della stringa di identificazione che precede il ritorno a capo e l'avanzamento riga viene utilizzata nello scambio di chiavi Diffie-Hellman (vedere sezione 8).

Il server PUÒ inviare altre righe di dati prima di inviare la stringa di versione. Ogni riga DOVREBBE essere terminata da un ritorno a capo e un avanzamento riga. Tali righe NON DEVONO iniziare con "SSH-", e DOVREBBERO essere codificate in ISO-10646 UTF-8 [RFC3629] (la lingua non è specificata). I client DEVONO essere in grado di elaborare tali righe. Tali righe POSSONO essere silenziosamente ignorate, o POSSONO essere visualizzate all'utente client. Se vengono visualizzate, DOVREBBE essere utilizzato il filtraggio dei caratteri di controllo, come discusso in [SSH-ARCH]. L'uso principale di questa funzionalità è consentire ai wrapper TCP di visualizzare un messaggio di errore prima di disconnettersi.

Sia le stringhe protoversion che softwareversion DEVONO essere composte da caratteri US-ASCII stampabili, ad eccezione dei caratteri di spazio bianco e del segno meno (-). La stringa softwareversion è utilizzata principalmente per attivare estensioni di compatibilità e per indicare le capacità di un'implementazione. La stringa comments DOVREBBE contenere informazioni aggiuntive che potrebbero essere utili per risolvere i problemi degli utenti. Pertanto, un esempio di stringa di identificazione valida è:

SSH-2.0-billsSSH_3.6.3q3<CR><LF>

Questa stringa di identificazione non contiene la stringa comments opzionale ed è quindi terminata da un CR e LF immediatamente dopo la stringa softwareversion.

Lo scambio di chiavi inizierà immediatamente dopo l'invio di questo identificatore. Tutti i pacchetti che seguono la stringa di identificazione DEVONO utilizzare il protocollo di pacchetti binari, che è descritto nella sezione 6.