Estou tentando fazer login no meu roteador DSL, porque estou tendo problemas com o correio da linha de comando. Espero poder reconfigurar o roteador.
Quando eu dou o ssh
comando, é isso que acontece:
$ ssh [email protected]
Unable to negotiate with 10.255.252.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
então olhei para este post de stackexchange e modifiquei meu comando para isso, mas tenho um problema diferente, desta vez com as cifras.
$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 [email protected]
Unable to negotiate with 10.255.252.1 port 22: no matching cipher found. Their offer: 3des-cbc
então existe um comando para oferecer 3des-cbc
criptografia? Não tenho certeza sobre o 3des, como se quero adicioná-lo permanentemente ao meu sistema.
Existe um comando para permitir a 3des-cbc
cifra?
Qual é o problema aqui? Não está pedindo senha.
ssh -o KexAlgorithms=diffe-hellman-group-sha1 [email protected]
forçar o seu cliente a usar um algoritmo mais antigo e menos seguro e verifique se há firmware mais recente para o seu roteador.ssh -vvv ...
revelará todos os protocolos de troca de chaves e criptografia oferecidos pelo servidor.Respostas:
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 umaHost
estrofe. Por exemplo, se sua configuração SSH diz atualmente (exemplo fictício):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 ...
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:
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
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.
fonte
Cipher
linha, mas funcionou! Obrigado!Ok, eu li a página de manual e descobri.
Eu não queria modificar meu arquivo de configuração e, portanto, procurei o termo "cifra" na página do manual, que me mostrou a
-c
opção; isso me permite especificar o tipo de criptografia. o comando final foi então:fonte
Recentemente, tive esse problema usando o PuTTY para conectar-se a uma versão mais recente do Ubuntu. Parece que as versões anteriores do PuTTY não tinham cifras atualizadas. Portanto, o download da versão mais recente do PuTTY corrigiu o problema. Essa poderia ser outra solução.
fonte
Outra resposta para os comandos do MacOSX e da CLI (SFTP, por exemplo): consulte este artigo @ http://www.openssh.com/legacy.html (Opções de legado do OpenSSL). Eu estava recebendo um erro consistente de "não foi possível negociar", resolvido pelas informações deste artigo, especificamente a configuração de um parâmetro de configuração no arquivo "~ / .ssh / config".
BTW, recebi esse erro quando meu servidor SFTP de destino (não sob minha administração) finalmente desativou o TLS 1.0 (opção de criptografia SSL) e requer o TLS 1.1 ou 1.2.
fonte