Passa al contenuto principale

4. Connection Setup (Impostazione della connessione)

4. Connection Setup (Impostazione della connessione)

SSH opera su qualsiasi trasporto a 8 bit pulito (8-bit clean) e trasparente ai dati binari (binary-transparent). Il trasporto sottostante DOVREBBE proteggere dagli errori di trasmissione, poiché tali errori causano la terminazione della connessione SSH.

Il client avvia la connessione.

4.1. Use over TCP/IP (Utilizzo su TCP/IP)

Quando utilizzato su TCP/IP, il server normalmente rimane in ascolto per le connessioni sulla porta 22. Questo numero di porta è stato registrato presso l'IANA ed è stato ufficialmente assegnato a SSH.

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 questa serie di documenti è la versione 2.0, '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 ritorno a capo (CR, Carriage Return) e un singolo avanzamento riga (LF, Line Feed) (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 (control character filtering), come discusso in [SSH-ARCH]. L'uso principale di questa funzionalità è consentire ai TCP-wrappers 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 spaziatura (whitespace) e del segno meno (-). La stringa 'softwareversion' viene 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 nella risoluzione dei 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 e quindi termina con CR e LF immediatamente dopo la stringa 'softwareversion'.

Lo scambio di chiavi (key exchange) inizierà immediatamente dopo l'invio di questo identificatore. Tutti i pacchetti successivi alla stringa di identificazione DEVONO utilizzare il protocollo a pacchetti binari (binary packet protocol), che è descritto nella Sezione 6.