SSH: A autenticidade do host <host> não pode ser estabelecida

83

O que essa mensagem significa? Isso é um problema em potencial? O canal não é seguro?

Ou isso é simplesmente uma mensagem padrão que sempre é exibida ao se conectar a um novo servidor?

Estou acostumado a ver esta mensagem quando usava SSH no passado: sempre digitei meu login com uma senha da maneira normal e me senti bem por não usar chaves públicas / privadas (o que é muito mais seguro que uma senha curta). Mas desta vez eu configurei uma chave pública com ssh para minha conexão com o bitbucket, mas ainda recebi a mensagem. Estou ciente de que o prompt da senha no final é uma medida de segurança suplementar diferente para a descriptografia da chave privada.

Espero que alguém possa dar uma boa explicação para o que se entende por essa mensagem de "autenticidade não pode ser estabelecida".

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.

RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'bitbucket.org,207.223.240.181' (RSA) to the list of
known hosts.
Enter passphrase for key '/c/Users/Steven/.ssh/id_rsa':
Steven Lu
fonte
2
Este é realmente um daqueles "significa exatamente o que diz" mensagens. Isso significa sshque não há como dizer que você realmente está falando bitbucket.org. Se você configurou alguma maneira de saber, não está funcionando. Se você não fez, então está dizendo que você não fez.
David Schwartz

Respostas:

71

Está dizendo que você nunca se conectou a este servidor antes. Se você estava esperando isso, é perfeitamente normal. Se você é paranóico, verifique a soma de verificação / impressão digital da chave usando um canal alternativo. (Mas observe que alguém que pode redirecionar sua conexão ssh também pode redirecionar uma sessão do navegador da Web.)

Se você já se conectou a este servidor antes desta instalação do ssh, o servidor foi reconfigurado com uma nova chave ou alguém está falsificando a identidade do servidor. Devido à seriedade de um ataque do tipo intermediário, está avisando sobre a possibilidade.

De qualquer forma, você tem um canal criptografado seguro para alguém . Ninguém sem a chave privada correspondente à impressão digital 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40pode decodificar o que você envia.

A chave que você usa para se autenticar não tem relação ... você não deseja enviar informações de autenticação para um servidor fraudulento que possa roubá-las e, portanto, não deve esperar nenhuma alteração, dependendo de usar uma senha ou chave privada para efetuar login. Você simplesmente não chegou tão longe no processo ainda.

Ben Voigt
fonte
Portanto, mesmo que haja um terceiro malicioso, e eu rejeito a mensagem, tudo o que vou fazer é enviar a ele minha chave pública, e ele ainda não será capaz de descriptografar meus dados? Portanto, agora as únicas maneiras de comprometer meus dados são se (1) minha chave privada estiver comprometida ou (2) servidores do bitbucket estiverem comprometidos ou (3) minha conta do bitbucket estiver comprometida. Contanto que eles limitem as tentativas de login (o que eu ficaria realmente surpreso se não o fizerem), realmente não existem muitas razões para ficar paranóico neste momento, não é?
Steven Lu
10
@ Steven: Você não está enviando sua chave pública, ele já tem isso. O que você está fazendo é usar sua chave privada para autenticar um desafio ... se ele se conectou ao bitbucket.org real que afirma ser você, recebeu o desafio real e o usou ao desafiá-lo, ele poderia enganá-lo enviando a ele uma resposta válida que ele usa para obter acesso à sua conta no bitbucket.org real. Ele ainda não possui sua chave privada, portanto, não pode fazer login em nenhum momento futuro ou em qualquer outro recurso que a chave desbloqueie, mas ele tem uma sessão de login.
Ben Voigt
Isso foi o que eu quis dizer na minha resposta quando disse "você não gostaria de enviar informações de autenticação para um servidor fraudulento".
Ben Voigt
2
"Se você é paranóico, verifique a soma de verificação / impressão digital da chave usando um canal alternativo." Para os paranóicos (e para o registro), a impressão digital do github está em help.github.com/articles/generating-ssh-keys e o bitbucket é mencionado em confluence.atlassian.com/display/BITBUCKET/…
domingo
11
@BenVoigt Sim, eu entendo que, paranóia real seria, evidentemente chegar a essas páginas através de uma rede sem relação diferente, ou talvez voar para a sede github e obter a impressão digital em pessoa :)
sundar
21

Digamos que você conhece alguém para trocar alguns segredos comerciais. Seu orientador informa que você nunca conheceu essa pessoa antes e que ela pode ser um impostor. Além disso, para as próximas reuniões com ele, seu orientador não irá mais avisá-lo. É isso que a mensagem significa. A pessoa é o servidor remoto e seu orientador é o cliente ssh.

Não acho paranóico checar a identidade da pessoa antes de compartilhar segredos com ela. Por exemplo, você pode abrir uma página da web com uma foto dela e compará-la com o rosto à sua frente. Ou verifique seu cartão de identidade.

Para o servidor bitbucket, você pode usar um computador diferente e mais confiável, obter a imagem de sua face e compará-la com a que você obtém no computador que está usando agora. Usar:

 ssh-keyscan -t rsa bitbucket.org | ssh-keygen -lv -f -

Se as faces corresponderem, você poderá adicionar a chave ao arquivo, por exemplo ~/.ssh/known_hosts(local padrão em muitas distribuições Linux) com:

ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts

e o cliente ssh não avisará, pois já conhece o rosto dela . Ele comparará os rostos sempre que você conectar. Isso é muito importante. No caso de um impostor (por exemplo, um ataque man-in-the-middle), o cliente ssh rejeitará a conexão porque o rosto terá mudado.

Ivan Ogai
fonte
Esta resposta é muito útil
010110110101
4
Esta deve ser a resposta aceita: ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts Obrigado Ivan!
Rod
11
@ Rod: Você escolheria a resposta aceita com base em um comando que é totalmente desnecessário (você pode modificar known_hostsapenas digitando "yes" no aviso original, como já mostrado na pergunta) e perigoso (a chave que você adicionou ao seu arquivo não é necessariamente o mesmo que você olhou, porque o buscou duas vezes!)?
Ben Voigt
@BenVoigt, o que esta solução fornece que digitar "yes" não é que esta solução é totalmente programável. Presumo que a maioria das pessoas possa descobrir como responder ao "(sim / não)?" pronto. Eu me deparei com essas perguntas e respostas enquanto tentava descobrir como resolver esse problema sem intervenção humana (para um script de configuração do servidor). Na minha empolgação, acho que não percebi que a pergunta do OP é um pouco diferente da minha, mas na OMI essa ainda é a resposta mais útil / não óbvia do segmento.
Rod
11
@ Rod: Não, não é útil. Diminuir sua segurança é ruim. Encontrar maneiras mais rápidas de diminuir sua segurança é exatamente o oposto de útil.
Ben Voigt
5

Eu simplesmente tive que criar o known_hostsarquivo de texto em~/.ssh

sudo vim ~/.ssh/known_hosts
sudo chmod 777 ~/.ssh/known_hosts

Depois de fazer isso, ele adicionou o host e eu nunca mais vi a mensagem.

Brian
fonte
Eu não acho que isso realmente muda nada. O aviso é mostrado quando o próprio servidor foi alterado. Por exemplo, se você provisionar uma nova máquina virtual à qual está se conectando pela primeira vez. O fato de você ter ou não um known_hostsarquivo (com as permissões corretas) não impede que você pergunte sobre a autenticidade do novo servidor ... A menos que você já tenha buscado a assinatura da chave de pub desse servidor e a tenha colocado no seu known_hosts, que é o caminho normal para ignorar a verificação (embora apenas dizer "sim" para a verificação é muitas vezes mais rápido para alcançar o mesmo)
Steven Lu
Obrigado. Eu conhecia_hosts, mas continuava recebendo o aviso. Eu apenas tive que alterar as permissões em known_hosts para que os avisos parassem.
ArcaneDominion
6
Por favor, não faça isso. Pode ser um sério risco à segurança. Seu arquivo host só deve ser gravável por você. O segundo comando é basicamente permitir que qualquer pessoa no seu computador falsifique as identidades do servidor.
Stolz
"O aviso é mostrado quando o próprio servidor mudou." Ou quando o servidor nunca foi visitado antes.
Rod
2

Existe outra maneira fácil. Basta tocar em um arquivo "config" em /root/.ssh e adicionar o parâmetro StrictHostKeyChecking no Na próxima vez em que você fizer login em um servidor, a chave rsa será adicionada ao known_hosts e não solicitará "yes" para confirmação de autenticidade

Usman
fonte
3
Isto não é recomendado. É fácil, mas não é a maneira correta de lidar com a situação.
Vikas
1

Essa mensagem é apenas o SSH informando que você nunca viu essa chave de host específica antes, portanto, não é possível verificar realmente se você está se conectando ao host que pensa ser. Quando você diz "Sim", coloca a chave ssh no seu arquivo known_hosts e, nas conexões subseqüentes, compara a chave obtida do host com a do arquivo known_hosts.

Havia um artigo relacionado sobre estouro de pilha mostrando como desabilitar esse aviso, https://stackoverflow.com/questions/3663895/ssh-the-authenticity-of-host-hostname-cant-be-established .

Mike
fonte
10
Mas desabilitar o aviso não é recomendado - ele existe para uma finalidade, fornecendo informações de segurança muito úteis.
Rory Alsop
0

Além das respostas já dadas (você nunca se conectou a este host antes), também há a possibilidade distinta de você nunca se conectar a partir do host atual antes (a esse host); isso é apenas psicologicamente diferente; você pensa que está se conectando do host A (para B), enquanto realmente está tentando se conectar do host X (para B). Isso pode acontecer, por exemplo, quando você faz uma ssh pela primeira vez de A a X e depois pelo mesmo terminal tenta ssh para B pensando que ainda está no A.

Carlo Wood
fonte
Gostaria de saber se o uso de encaminhamento de agente ssh também pode suprimir o aviso se o host A souber sobre B, mas X não, mas o encaminhamento de agente ocorrer entre A e X. A maioria dos ambientes (que fornecem ssh) e os aplicativos de terminal suportam o encaminhamento de agente. reduza o número de chaves ssh que você precisa gerenciar apenas para seus dispositivos finais.
Steven Lu
0

No meu caso, a senha menos logon não estava funcionando por causa das minhas permissões de diretório inicial porque alterei as configurações padrão. Finalmente, aqui está o que funcionou para mim. minhas permissões de diretório inicial são

/ home / nome de usuário

drwxr----x. 18 username     groupname  4096 May 11 11:52 username

/home/username/.ssh

268823097 drwx------   2 username groupname     29 May 11 11:53 .ssh

/home/username/.ssh/authorized_keys

-rw-r----- 1 username groupname 402 May 11 11:53 authorized_keys
Mian Asbat Ahmad
fonte