Como evitar a verificação de host do SSH para hosts conhecidos?

169

Recebo o seguinte aviso sempre que tento conectar um servidor usando SSH. Eu digito "sim", mas existe uma maneira de evitar isso?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 
shantanuo
fonte
7
/ dev / null existe para aqueles que pensam que são imunes ao homem nos ataques intermediários :)
Tim Post
11
Pior parte: digite ypara economizar tempo e reclama: Please type 'yes' or 'no': (hmph)
ADTC
semelhante ao askubuntu.com/questions/87449/…
MarkHu 21/03

Respostas:

234

Use a -oopção

ssh -o "StrictHostKeyChecking no" user@host
o geek
fonte
11
Você pode querer usar um arquivo de identidade alternativa com a bandeira '-i'
MUY Bélgica
Qual seria o uso de um arquivo de identidade alternativo? Quero dizer, se você está se conectando a um host comprometido, que diferença faz na sua autenticação - não é como se o host comprometido também pudesse roubar sua chave.
Dagelf
102

Adicione as seguintes linhas ao início de /etc/ssh/ssh_config...

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Opções:

  • A sub-rede Host pode *permitir acesso irrestrito a todos os IPs.
  • Edite /etc/ssh/ssh_configpara configuração global ou ~/.ssh/configpara configuração específica do usuário.

Consulte http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

JimFred
fonte
2
Pena que só posso te votar uma vez. Definir KnownHosts como / dev / null é genial.
precisa saber é o seguinte
11
Você é o mais inteligente.
Darth Egregious
30
Ha! Diga a minha esposa.
precisa saber é o seguinte
30

Você só deve obter isso na primeira vez em que se conectar a um novo host. Depois de responder, yeso host é armazenado ~/.ssh/known_hostse você não será solicitado na próxima vez que se conectar.

Observe que, se ~/.ssh/known_hostsnão puder ser gravado por qualquer motivo (por exemplo, problema de permissões), você será solicitado sempre que se conectar.

Paul R
fonte
7
A questão é: existe uma maneira de evitar o prompt?
Shantanuo 29/03/10
Tentei adicionar "CheckHostIP no" ao arquivo / etc / ssh / ssh_config. Mas isso não parece estar funcionando
shantanuo
2
sudo chown -R usuário: usuário .ssh; sudo chmod 700 .ssh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ hostname e reconecte-se, o que deve eliminar TODOS os problemas e SOMENTE sempre solicitar novamente se um ssk_Hostkey estiver cheio de | alterado ou você é vítima de um MITM.
linuxdev2013
11
ele diz que "toda vez que" assim que esta resposta é super apropriada
tarikakyol
11

A melhor maneira (porque não sacrifica a segurança) é conectar uma vez a todos os computadores de um cliente (você sempre será solicitado, sempre responda sim). Conforme indicado na outra resposta, as chaves serão armazenadas em ~ / .ssh / known_hosts. Em seguida, copie esse arquivo para todos os computadores clientes dos quais você possa querer se conectar mais tarde (possivelmente para cada conta de usuário usada). Todas essas contas "conhecerão" os computadores e, portanto, não serão solicitadas.

A vantagem de apenas desativar o prompt é que o SSH pode realmente verificar se há um ataque MITM.

sleske
fonte
11
Embora, se você ssh, muitas vezes através de conexões para a frente, você vai querer adicionar isso ao / etc / ssh / ssh_config: Anfitrião 127.0.0.1 NoHostAuthenticationForLocalhost sim
Dagelf
1

Se você deseja desativar a confirmação, em vez da autenticação, pode usar a opção: "-o CheckHostIP = no"

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no [email protected]
RJ
fonte
O OP já recebeu a mesma resposta e a aceitou.
Ayan
0

Provavelmente, isso ocorreu porque o servidor de chaves ssh mudou, pois o IP ou o domínio do servidor é o mesmo, mas com incompatibilidade de chaves ssh.

Você deve remover a chave armazenada /home/$user/.ssh/known_hostspara evitar esta mensagem.

Corrigi-o removendo todas as chaves desse arquivo, para criar um novo token para esse nome de domínio.

IvanReed
fonte
11
A tecla alterada produz uma mensagem muito mais feia com uma caixa de sinal de trânsito WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! e IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!em letras maiúsculas. A mensagem na pergunta ocorre apenas se ainda não houver uma entrada known_hosts.
Dave_thompson_085
-1

Verifique as permissões no seu ~/.ssh/known_hostsarquivo. Os meus estavam incorretos quando recebi esse problema. Corrigi-o com:

chmod 0600 ~/.ssh/known_hosts
Andrew McCombe
fonte