Como descartar silenciosamente o diálogo de falha de autenticação da chave do host SSH

0

Criamos novos servidores o tempo todo e, em seguida, o SSH nesses servidores. Usamos DNSSEC e SSFHP para autenticação de chave do host. Às vezes (por qualquer motivo) a correspondência de DNS falhará, o que fará com que esta caixa de diálogo seja apresentada:

The authenticity of host 'hostname.domain.com (1.2.3.4)' can't be established.
ECDSA key fingerprint is SHA256:obfuscated.
No matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no)?

Estou querendo que o SSH falhe silenciosamente, um código de retorno seria bom, ou pelo menos não exigiria interação.

Analisei as páginas de manual para ssh e ssh_config . Não vi nada que fizesse com que o SSH falhasse de forma não interativa.

Modo silencioso (apenas -q ) 'Faz com que a maioria das mensagens de aviso e diagnóstico sejam suprimidas.' Não suprime diálogos interativos.

Meu objetivo principal para precisar disso é para que possamos acessar programaticamente os servidores remotos e pular (ou tentar novamente) aqueles que estão falhando na autenticação.

    
por SunSparc 06.01.2018 / 23:05

1 resposta

0

Use a opção StrictHostKeyChecking ; da página man:

StrictHostKeyChecking

  If this flag is set to ''yes'', ssh(1) will never automatically
  add host keys to the ~/.ssh/known_hosts file, and refuses to
  connect to hosts whose host key has changed. This provides
  maximum protection against trojan horse attacks, though it can
  be annoying when the /etc/ssh/ssh_known_hosts file is poorly
  maintained or when connections to new hosts are frequently
  made. This option forces the user to manually add all new
  hosts. If this flag is set to ''no'', ssh will automatically add
  new host keys to the user known hosts files. If this flag is set
  to ''ask'', new host keys will be added to the user known host
  files only after the user has confirmed that is what they really
  want to do, and ssh will refuse to connect to hosts whose host
  key has changed. The host keys of known hosts will be verified
  automatically in all cases. The argument must be ''yes'',
  ''no'', or ''ask''. The default is ''ask''.

Por exemplo:

$ ssh -o StrictHostKeyChecking=yes remote.host
No RSA host key is known for remote.host and you have requested strict checking.
Host key verification failed.
$ echo $?
255
Adenda: Eu não li a questão de perto o suficiente na primeira vez e perdi o fato de que você está usando a verificação de chave de host baseada em DNS. Eu realmente não sei se isso vai ajudar no seu caso, mas vou deixar a resposta no caso de alguém achar útil.

    
por 08.01.2018 / 21:14

Tags