SSH retorna: nenhum tipo de chave de host correspondente encontrado. Sua oferta: ssh-dss

81

Estou acostumado a usar o Putty em uma caixa do Windows ou em um terminal da linha de comando OSX para SSH em um NAS, sem nenhuma configuração do cliente.

O Ubuntu 16.04 tenta fazer o SSH no NAS (via LAN):

ssh [email protected]

Unable to negotiate with 192.168.8.109 port 22: no matching host key type found. Their offer: ssh-dss
  1. Esse resultado / resposta é intencional?
  2. Existe uma correção simples que permita o acesso SSH ao NAS?
Gatorback
fonte
Você não tinha nenhum .pemarquivo de chave privada SSH ( ) na sua máquina Windows, tinha?
Android Dev
Nenhum arquivo .pem na caixa de Windows
Gatorback
1
Seu NAS não seria uma série EX da Western Digital, seria? :)
Adam Plocher
É um dispositivo MyCloud: espero que de alguma forma esclarece
Gatorback

Respostas:

139

A versão do OpenSSH incluída no 16.04 desativa o ssh-dss. Há uma página interessante com informações herdadas que inclui esse problema: http://www.openssh.com/legacy.html

Em poucas palavras, você deve adicionar a opção -oHostKeyAlgorithms=+ssh-dssao comando SSH:

ssh -oHostKeyAlgorithms=+ssh-dss [email protected]

Você também pode adicionar um padrão de host ao seu, ~/.ssh/configpara não precisar especificar o algoritmo de chave sempre:

Host nas
  HostName 192.168.8.109
  HostKeyAlgorithms=+ssh-dss

Isso tem o benefício adicional de que você não precisa digitar o endereço IP. Em vez disso, sshreconhecerá o host nase saberá onde se conectar. Claro que você pode usar qualquer outro nome em seu lugar.

Kalle Elmér
fonte
Eu acredito que estas são soluções no lado do Ubuntu. Existe uma opção simples no lado do NAS? Seria bom entender todas as opções e aproveitar a oportunidade para fortalecer qualquer ponto fraco da segurança. Talvez essa seja outra pergunta para outro tópico? Explicação muito boa \ resposta
gatorback 13/10
É possível definir isso globalmente? Como IP de curinga? 0.0.0.0 não funciona
podarok
2
@podarok, tryHost *
brownian
10

Editar o arquivo ~ / .ssh / config é a melhor opção. Se você tiver um número de hosts para se conectar na mesma sub-rede, poderá usar o seguinte método para evitar inserir cada host no arquivo:

 Host 192.168.8.*
  HostKeyAlgorithms=+ssh-dss

Isso funciona muito bem para mim, pois tenho vários switches Brocade para gerenciar e eles começaram a reclamar da chave Host depois que mudei para o Ubuntu 16.04.

truxpin
fonte
6

Se você deseja usar o OpenSSH mais recente para conectar-se a servidores obsoletos:

ssh -o KexAlgorithms=diffie-hellman-group14-sha1 -oHostKeyAlgorithms=+ssh-dss my.host.com

Adicione -v se quiser ver o que está acontecendo e -o HostKeyAlgorithms = ssh-dss se ainda não funcionar:

ssh -v -o HostKeyAlgorithms=ssh-dss -o KexAlgorithms=diffie-hellman-group14-sha1 my.host.com

Você também pode, é claro, editar / etc / ssh / ssh_config ou ~ / .ssh / ssh_config e adicionar:

Host my.host.com *.myinsecure.net 192.168.1.* 192.168.2.*
    HostKeyAlgorithms ssh-dss
    KexAlgorithms diffie-hellman-group1-sha1    

https://forum.ctwug.za.net/t/fyi-openssh-to-access-rbs-openssh-7/6069 menciona a seguinte correção nas Routerboards Mikrotik:

/ip ssh set strong-crypto=yes

(Observe isso aqui porque esta resposta também aparece nas pesquisas na Web ao procurar uma mensagem de erro semelhante.)

Dagelf
fonte
ele deve ser KexAlgorithms -o = Diffie-Hellman-grupo1-SHA1 (não 14)
dalf
Isso depende ... $ ssh -Q server kex diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh- Veja também: sha2-nistp384 ecdh-sha2-nistp521 [email protected]
Dagelf