Estou tentando ssh para a máquina remota, a tentativa falha:
$ ssh -vvv [email protected]
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: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
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
Até onde eu entendo a última string do log, o servidor se oferece para usar um dos 4 algoritmos de cifra a seguir: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
. Parece que meu cliente ssh não suporta nenhum deles, então o servidor e o cliente não conseguem negociar mais.
Mas meu cliente suporta todos os algoritmos sugeridos:
$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
[email protected]
aes128-ctr
... and there are several more.
E se eu especificar explicitamente o algoritmo assim:
ssh -vvv -c aes256-cbc [email protected]
Posso logar com sucesso no servidor.
My ~/.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 mesmo pode usar, por que não apenas usá-lo?
Algumas notas adicionais:
Não havia esse problema algum tempo (cerca de um mês) atrás. Eu não mudei nenhum arquivo de configuração ssh desde então. Eu atualizei os pacotes instalados.
Há uma pergunta que descreve um problema de aparência muito semelhante, mas não há resposta à minha pergunta: ssh incapaz de negociar - nenhum método de troca de chave correspondente encontrado
ATUALIZAÇÃO: problema resolvido
Como a telcoM explicou, o problema é com o servidor: ele sugere apenas os algoritmos de cifra 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 arquivo /etc/ssh/sshd_config
. A primeira (!) linha deste arquivo foi:
Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Isso é muito estranho (o fato dessa linha ser a primeira no arquivo), tenho certeza de que nunca toquei no arquivo antes. No entanto, alterei a linha para:
Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
reiniciei o servidor (não descobri apenas como reiniciar o sshd
serviço) e agora o problema desapareceu: posso ssh para o servidor como de costume.