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.
Os
-cbc
algoritmos revelaram-se vulneráveis a um ataque. Como resultado, as versões atualizadas do OpenSSH agora rejeitarão esses algoritmos por padrão: por enquanto, eles ainda estão disponíveis se você precisar deles, mas como você descobriu, você deve habilitá-los explicitamente.Inicialmente, quando a vulnerabilidade foi descoberta (no final de 2008, quase 10 anos atrás!), esses algoritmos foram colocados apenas no final da lista de prioridades por questão de compatibilidade, mas agora sua depreciação no SSH atingiu uma fase em que esses algoritmos são desativado por padrão. De acordo com essa pergunta no Cryptography.SE , essa etapa de depreciação já estava acontecendo no ano de 2014.
Por favor, considere este um lembrete gentil para atualizar seu servidor SSH , se possível. (Se for uma implementação baseada em firmware, veja se o firmware atualizado está disponível para o seu hardware.)
crie um arquivo dentro de ~/.ssh/config e cole abaixo do conteúdo
Você pode atualizar sua configuração ssh a partir do arquivo localizado em: /etc/ssh/ssh_config
sudo nano /etc/ssh/ssh_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
Ctrl + X
. Pressione Enter para salvar e sair.O mesmo problema que o OP me incomodou por um longo tempo, também em um servidor Synology, e
ssh -c aes256-cbc diskstation.local
tem sido uma medida útil de intervalo. Mas saber que o servidor usa cifras obsoletas não é muito tranquilizador.A solução real não é esperar que a Synology atualize o firmware (ou pelo menos não só), como eu ingenuamente sabia há vários anos, mas verificar a configuração do servidor. As cifras permitidas estão escondidas atrás do Terminal & SNMP>Advanced parameters . Escolher qualquer coisa permitiria cifras mais modernas, e qualquer coisa, menos a baixa segurança, desativará as
-cbc
cifras.