Esse erro específico ocorre enquanto o canal criptografado está sendo configurado. Se o seu sistema e o sistema remoto não compartilham pelo menos uma cifra, não há uma cifra para concordar e nenhum canal criptografado é possível. Geralmente, os servidores SSH oferecem um pequeno punhado de cifras diferentes para atender a diferentes clientes; Não sei por que seu servidor seria configurado para permitir apenas 3DES-CBC.
Agora, o 3DES-CBC não é terrível. É lento e oferece menos segurança do que alguns outros algoritmos, mas não pode ser quebrado imediatamente, desde que as chaves sejam selecionadas corretamente. A própria CBC tem alguns problemas quando o texto cifrado pode ser modificado em trânsito, mas eu suspeito fortemente que a corrupção resultante seria rejeitada pelo HMAC do SSH, reduzindo o impacto. Bottom line, existem escolhas piores do que 3DES-CBC, e existem melhores. No entanto, sempre tome cuidado ao substituir os padrões relacionados à segurança, incluindo opções de algoritmos de troca de cifras e chaves.Esses padrões são os padrões por uma razão; algumas pessoas bastante inteligentes gastaram algum poder cerebral considerando as opções e determinaram que o que foi escolhido como padrão fornece a melhor troca geral de segurança versus desempenho.
Como você descobriu, pode usar -c ...
(ou -oCiphers=...
) para especificar qual cifra oferecer do lado do cliente. Nesse caso, a adição -c 3des-cbc
permite apenas 3DES-CBC do cliente. Como isso corresponde à cifra que o servidor oferece, um canal criptografado pode ser estabelecido e a conexão continua com a fase de autenticação.
Você também pode adicionar isso ao seu pessoal ~/.ssh/config
. Para evitar fazer uma alteração global para resolver um problema local, você pode colocá-lo em uma Host
estrofe. Por exemplo, se sua configuração SSH diz atualmente (exemplo fictício):
Port 9922
Ao especificar uma porta padrão global 9922 em vez da padrão 22, você pode adicionar uma estrofe de host para o host que precisa de configuração especial e uma estrofe de host global para o caso padrão. Isso se tornaria algo como ...
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
Host *
Port 9922
O recuo é opcional, mas acho que melhora muito a legibilidade. Linhas em branco e linhas iniciadas com #
são ignoradas.
Se você sempre (ou principalmente) efetua login como o mesmo usuário nesse sistema, também pode especificar esse nome de usuário:
Host 10.255.252.1
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
User enduser
Host *
Port 9922
Você não precisa adicionar uma Host *
estrofe se não houvesse nada em seu ~ / .ssh / config, pois nesse caso apenas os padrões compilados ou em todo o sistema (normalmente de / etc / ssh / ssh_config) seriam usava.
Nesse ponto, a linha de comando ssh para conectar-se a este host reduz para simplesmente
$ ssh 10.255.252.1
e todos os outros usuários do seu sistema e as conexões com todos os outros hosts do seu sistema não são afetados pelas alterações.