Questo particolare errore si verifica durante l'impostazione del canale crittografato. Se il sistema e il sistema remoto non condividono almeno un codice, non esiste un codice su cui concordare e non è possibile alcun canale crittografato. Di solito i server SSH offrono una manciata di cifre diverse per soddisfare diversi client; Non sono sicuro del motivo per cui il tuo server sarebbe configurato per consentire solo 3DES-CBC.
Ora, 3DES-CBC non è terribile. È lento e offre meno sicurezza rispetto ad alcuni altri algoritmi, ma non è immediatamente fragile finché le chiavi sono selezionate correttamente. La stessa CBC ha alcuni problemi quando il testo cifrato può essere modificato in transito, ma sospetto fortemente che la corruzione risultante sarebbe respinta dall'HMAC di SSH, riducendo l'impatto. In conclusione, ci sono scelte peggiori rispetto a 3DES-CBC e ce ne sono di migliori. Tuttavia, procedere sempre con cautela quando si ignorano le impostazioni predefinite relative alla sicurezza, comprese le scelte dell'algoritmo di cifratura e scambio di chiavi.Tali valori predefiniti sono i valori predefiniti per un motivo; alcune persone piuttosto intelligenti hanno speso un po 'di energia cerebrale considerando le opzioni e determinato che ciò che è stato scelto come predefinito offre la migliore sicurezza complessiva rispetto al compromesso delle prestazioni.
Come hai scoperto, puoi utilizzare -c ...
(o -oCiphers=...
) per specificare quale cifra offrire dal lato client. In questo caso l'aggiunta -c 3des-cbc
consente solo 3DES-CBC dal client. Poiché questo corrisponde a una cifra offerta dal server, è possibile stabilire un canale crittografato e la connessione procede alla fase di autenticazione.
Puoi anche aggiungere questo al tuo personale ~/.ssh/config
. Per evitare di apportare una modifica globale per risolvere un problema locale, è possibile inserirlo in una Host
stanza. Ad esempio, se la tua configurazione SSH attualmente dice (esempio fittizio):
Port 9922
specificando una porta predefinita globale di 9922 anziché la 22 predefinita, è possibile aggiungere una stanza host per l'host che necessita di una configurazione speciale e una stanza host globale per il caso predefinito. Sarebbe diventato qualcosa come ...
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
Host *
Port 9922
Il rientro è facoltativo, ma trovo che migliora notevolmente la leggibilità. Le righe vuote e le righe che iniziano con #
vengono ignorate.
Se accedi sempre (o principalmente) allo stesso utente su quel sistema, puoi anche specificare quel nome utente:
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
User enduser
Host *
Port 9922
Non è necessario aggiungere una Host *
stanza se non c'era nulla nella tua ~ / .ssh / config per cominciare, come in quel caso solo le impostazioni predefinite compilate o a livello di sistema (in genere da / etc / ssh / ssh_config) sarebbero Usato.
A questo punto, la riga di comando ssh per connettersi a questo host si riduce a semplicemente
$ ssh 10.255.252.1
e tutti gli altri utenti del sistema e le connessioni a tutti gli altri host dal sistema non sono interessati dalle modifiche.