Estou tentando ssh para máquina remota, a tentativa falha:
$ 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
Tanto quanto eu entendo a última seqüência do log, as ofertas de servidor para utilizar um dos seguintes 4 algoritmos de criptografia: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
. Parece que meu cliente ssh não suporta nenhum deles, portanto, o servidor e o cliente não podem negociar mais.
Mas meu cliente suporta todos os algoritmos sugeridos:
$ 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 eu especificar explicitamente o algoritmo assim:
ssh -vvv -c aes256-cbc admin@192.168.100.14
Posso fazer login com êxito no servidor.
Meu ~/.ssh/config
não contém nenhuma diretiva relacionada à cifra (na verdade, eu a removi completamente, mas o problema permanece).
Então, por que cliente e servidor não podem decidir qual cifra usar sem minhas instruções explícitas? O cliente entende que o servidor suporta aes256-cbc
, o cliente entende que ele próprio pode usá-lo, por que não usá-lo?
Algumas notas adicionais:
Não havia esse problema há algum tempo (cerca de um mês) atrás. Não alterei nenhum arquivo de configuração ssh desde então. Eu atualizei os pacotes instalados.
Há uma pergunta que descreve um problema com aparência muito semelhante, mas não há resposta para minha pergunta: ssh não é possível negociar - nenhum método de troca de chave correspondente foi encontrado
UPDATE: problema resolvido
Como a telcoM explicou, o problema está no servidor: sugere apenas os algoritmos de codificação obsoletos. Eu tinha certeza de que o cliente e o servidor não estão desatualizados. Eu entrei no servidor (a propósito, é Synology, atualizado para a versão mais recente disponível) e examinei o /etc/ssh/sshd_config
. A primeira linha (!) Desse arquivo foi:
Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Isso é muito estranho (o fato de a linha ser a primeira do arquivo), tenho certeza de que nunca o toquei antes. No entanto, mudei a linha para:
Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
reiniciou o servidor (não descobriu como reiniciar sshd
apenas o serviço) e agora o problema se foi: eu posso ssh no servidor como de costume.