Sto provando a ssh su macchina remota, il tentativo fallisce:
$ ssh -vvv admin@192.168.100.14
OpenSSH_7.7p1, OpenSSL 1.0.2o 27 Mar 2018
.....
debug2: ciphers ctos: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: ciphers stoc: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com
debug2: compression stoc: none,zlib@openssh.com
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: rsa-sha2-512
Unable to negotiate with 192.168.100.14 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Per quanto ho capito l'ultima stringa del registro, il server offerte da utilizzare uno dei seguenti 4 algoritmi di cifratura: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
. Sembra che il mio client SSH non supporti nessuno di essi, quindi il server e il client non sono in grado di negoziare ulteriormente.
Ma il mio client supporta tutti gli algoritmi suggeriti:
$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
... and there are several more.
E se specifico esplicitamente l'algoritmo in questo modo:
ssh -vvv -c aes256-cbc admin@192.168.100.14
Posso accedere con successo al server.
My ~/.ssh/config
non contiene alcuna direttiva relativa alla crittografia (in realtà l'ho rimossa completamente, ma il problema rimane).
Quindi, perché client e server non possono decidere quale cifra utilizzare senza le mie istruzioni esplicite? Il client capisce che il server supporta aes256-cbc
, il client capisce che può usarlo da solo, perché non semplicemente usarlo?
Alcune note aggiuntive:
Non ci sono stati problemi del genere qualche tempo fa (circa un mese) fa. Da allora non ho cambiato alcun file di configurazione ssh. Ho comunque aggiornato i pacchetti installati.
C'è una domanda che descrive un problema molto simile, ma non c'è risposta alla mia domanda: ssh incapace di negoziare - non è stato trovato alcun metodo di scambio chiave corrispondente
AGGIORNAMENTO: problema risolto
Come ha spiegato telcoM, il problema riguarda il server: suggerisce solo gli algoritmi di cifratura obsoleti. Ero sicuro che client e server non fossero obsoleti. Ho effettuato l'accesso al server (a proposito, è Synology, aggiornato all'ultima versione disponibile) ed esaminato il /etc/ssh/sshd_config
. La primissima (!) Riga di questo file era:
Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Questo è molto strano (il fatto che la riga sia la prima nel file), sono sicuro di non aver mai toccato il file prima. Tuttavia ho cambiato la linea in:
Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
riavviato il server (non ho capito come riavviare sshd
solo il servizio), e ora il problema è sparito: posso ssh al server come al solito.