Estou acostumado a usar o Putty em uma caixa Windows ou um terminal de linha de comando OSX para SSH em um NAS, sem nenhuma configuração do cliente.
O Ubuntu 16.04 tenta 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
- Este resultado/resposta é intencional?
- Existe uma correção simples que permite o acesso SSH ao NAS?
A versão do OpenSSH incluída no 16.04 desativa o ssh-dss. Há uma página legal com informações legadas que inclui esse problema: http://www.openssh.com/legacy.html
Em poucas palavras, você deve adicionar a opção
-oHostKeyAlgorithms=+ssh-dss
ao comando SSH:Você também pode adicionar um padrão de host no seu
~/.ssh/config
para não precisar especificar o algoritmo de chave sempre:Isso tem o benefício adicional de que você não precisa digitar o endereço IP. Em vez disso,
ssh
reconhecerá o hostnas
e saberá onde se conectar. Claro que você pode usar qualquer outro nome em seu lugar.Se você veio aqui porque o Bitbucket retorna o seguinte após uma atualização para o OpenSSH 8.8:
você NÃO deve habilitar o DSS (como na resposta aceita), mas sim o RSA em
~/.ssh/config
:Referência: https://community.atlassian.com/t5/Bitbucket-articles/OpenSSH-8-8-client-incompatibility-and-workaround/ba-p/1826047
Observe que
PubkeyAcceptedKeyTypes
é um alias compatível com versões anterioresPubkeyAcceptedAlgorithms
que foi sugerido no artigo. Se você usá-lo, a mesma configuração pode ser usada com versões mais antigas do cliente OpenSSH, por exemplo, se você compartilhar a configuração com contêineres docker.Você pode fazer o mesmo para outros hosts ou usar
Host *
para permitir RSA para qualquer host.Editar o arquivo ~/.ssh/config é a melhor opção. Se você tiver vários hosts para se conectar na mesma sub-rede, poderá usar o seguinte método para evitar inserir cada host no arquivo:
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.
Se você quiser usar o OpenSSH mais recente para se conectar a servidores obsoletos:
Adicione -v se quiser ver o que está acontecendo e -o HostKeyAlgorithms=ssh-dss se ainda não funcionar:
Você também pode, é claro, editar /etc/ssh/ssh_config ou ~/.ssh/ssh_config e adicionar:
https://forum.ctwug.za.net/t/fyi-openssh-to-access-rbs-openssh-7/6069 menciona a seguinte correção em Mikrotik Routerboards:
(Nada disso aqui porque essa resposta também aparece em pesquisas na web ao procurar uma mensagem de erro semelhante.)
Isso funcionou:
adicione à nova linha vazia:
NÃO foi necessário recarregar/reiniciar o SSHd.
ssh -v
também mostra detalhes adicionais, se necessário.Para mim, isso foi adicionado ao
.ssh\config
trabalhado :A execução deste one-liner no cliente funcionou para solucionar o problema: