Uso conexões SSH baseadas em PKI há mais de 10 anos. De repente, após uma atualização do servidor - algumas das conexões pararam de funcionar. Estou usando as mesmas chaves PKI que utilizo há anos (cada servidor tem suas próprias chaves, tenho um pequeno conjunto de chaves pessoais).
Trabalhando - fica assim:
C:\Users\michael>ssh2 -p 2222 [email protected] date
Authentication successful.
Fri Nov 25 10:30:42 2016
Não funcionar se parece com:
C:\Users\michael>ssh2 [email protected] date
warning: Authentication failed.
Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.).
O que mudou?
Respostas:
Após uma atualização - efeitos colaterais podem entrar em jogo. Com o OpenSSH - os padrões mudam frequentemente. O OpenBSD (que mantém / desenvolve o OpenSSH) possui uma política do OpenBSD para não se preocupar com a compatibilidade com versões anteriores. Isso pode "quebrar" coisas que, leram, estão funcionando bem.
Há uma dica enorme - que eu não percebi quando isso aconteceu comigo (usando a interface GUI, e apenas cliquei nela e 'fiquei brava' com 'atualização estúpida - nova versão está quebrada'. não foi quebrado - mas o OpenBSD / OpenSSH começou a alterar os padrões de troca de chaves começando com o OpenSSH-6.7p1, consulte: http://www.openssh.com/txt/release-6.7 , notadamente:
Meu problema é que tenho um cliente antigo que não possui nenhum dos novos padrões e, portanto, ele não pode se conectar.
Dois caminhos de solução: conserte / conserte o servidor ou - conserte / conserte o cliente.
Solução de servidor: retorne as configurações "antigas" para que clientes "antigos" possam continuar se conectando, o que é amigável aos clientes existentes - edite o arquivo sshd_config e adicione novamente (o suficiente) as cifras antigas.
As principais linhas a serem alteradas / adicionadas no sshd_config são:
Basta adicionar:
Solução 2 - corrigir / substituir o cliente
Uma maneira fácil de ver quais cifras o seu cliente atual suporta (assumindo a CLI)
ssh -h
e ver se isso fornece algo como:Outro comando útil é:
ssh -V
O meu - era - um cliente muito antigo - para o meu desktop. Olhando acima, você pode ver que ele não suporta nenhum dos algoritmos preferidos - 15 anos depois -, nem mesmo um -cbr (rotativo), apenas -cbc (cópia em bloco).
Se o seu cliente não tiver a opção de fornecer as chaves, etc. suportadas (o OpenSSH deve ter a opção
-Q
), basta iniciar uma conexãossh -v localhost
consigo mesmo, por exemplo, e existem linhas como esta para informar o que você sabe:E o que foi encontrado (e usado):
Extra: informações de depuração de uma conexão com falha - mais detalhes
Ou, o que foi tentado, mas errou.
Editar: adicionado 02/01/2017
Nova seção - e as chaves que param de funcionar?
No meu servidor, tenho um cliente 'antigo' e o cliente 'mais recente' instalado - e obtenho um comportamento diferente ao conectar-me a um servidor. Aqui, o problema não é uma correspondência incorreta de cifra - mas o uso de um par PKI arcaico - baseado no DSA.
Em resumo, o openssh-7 (.3) não envia mais (por padrão, talvez nem seja) chaves públicas DSA.
Abaixo, comparo a saída de duas versões do openssh
/ usr / bin / ssh (versão antiga, lado esquerdo) e
/ opt / bin / ssh (nova versão, lado direito) - o comando é:
À medida que você escaneia a saída abaixo, espero que você observe que as etapas e mensagens são geralmente as mesmas. A principal diferença ocorre após a sequência SSH2_MSG_SERVICE_ACCEPT
O que quero que você observe é que a versão antiga oferece (e é aceita pelo servidor 'antigo' - o par de chaves baseado em DSA, enquanto o novo servidor nunca oferece a chave baseada em DSA.
Nota: a 'solução' para isso é adicionar (pelo menos um) pares de PKI baseados em rsa, ecdsa ou ed25519.
fonte
ssh2
elas se me aceitassem - principalmente pela facilidade de fazerscp
transferências da mesma janela quessh