
Existe uma maneira de ignorar temporariamente meu ~/.ssh/known_hosts
arquivo?
mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$
OBSERVAÇÃO:
.. por algumas respostas/comentários, percebo que minha pergunta é um pouco enganosa, tão curta que écomportamento esperado), então é normal (no meu caso)há uma razão válida por trás disso, por que eu quero ver "ignorar")
Responder1
Você pode usar ssh -o StrictHostKeyChecking=no
para desligar a verificação known_hosts
momentaneamente. Mas eu desaconselho isso. Você realmente deve verificar por que a chave do host foi alterada.
Outra opção é adicionar uma entrada específica ao ~/.ssh/config
host em questão. Essa pode ser uma abordagem válida se você tiver um determinado host que gera novas chaves de host toda vez que é reinicializado e é reinicializado por um motivo válido várias vezes ao dia.
Host <your problematic host>
StrictHostKeyChecking no
Responder2
Para ignorar completamente seu arquivo de hosts conhecidos em um ambiente POSIX, defina as opções GlobalKnownHostsFile
e como :UserKnownHostsFile
/dev/null
ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host
Definir a StrictHostKeyChecking=no
opção permitirá que você se conecte, mas SSHainda mostrará um aviso:
ssh -o StrictHostKeyChecking=no user@host
Como outros observaram, provavelmente é melhor abordar o problema subjacente. Você poderia considerarAutenticação de certificado SSHpara verificar hosts, por exemplo.
Responder3
Se você reinstalou o servidor e, portanto, a identificação foi alterada, basta excluir a linha 155 especificada /Users/alexus/.ssh/known_hosts
e seguir em frente.
Se você alternar entre diferentes redes privadas, deverá usar nomes de host para se conectar, pois o cliente ssh também salvará chaves dependendo do nome de host. Adicione algo assim ao seu /etc/hosts
:
10.52.11.171 server1
10.52.11.171 server2
e use ssh server1
quando conectado à sub-rede 1 e ssh server2
quando conectado à sub-rede2. Dessa forma, ambos os servidores podem ter chaves de host diferentes.
Responder4
-o StrictHostKeyChecking=no
só funciona se o host ainda não estiver presente no arquivoknown_hosts.
Eu acho que é mais limpo (sem avisos), se você espera que a chave dos hosts mude, talvez devido à clonagem da VM, para forçar a ignorância desses tipos de hosts como este:
# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
ssh-keygen -R ${host_ip}
echo ${host_key} >> ~/.ssh/known_hosts
}
# connect as normal way
ssh root@${host_ip} "hostname"