Мы постоянно раскручиваем новые серверы, а затем используем SSH на этих серверах. Мы используем DNSSEC и SSFHP для аутентификации ключа хоста. Иногда (по какой-либо причине) DNS-сопоставление не выполняется, что приводит к отображению этого диалога:

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)?

Я хочу, чтобы SSH работал молча, код возврата был бы нормальным или, по крайней мере, не требовал бы взаимодействия.

Я просмотрел справочные страницы по ssh и ssh_config . Я не видел ничего, что могло бы вызвать сбой SSH не в интерактивном режиме.

Только тихий режим (-q) 'Вызывает подавление большинства предупреждений и диагностических сообщений.«Это не подавляет интерактивные диалоги.

Моя основная цель для этого заключается в том, чтобы мы могли программно получать доступ к удаленным серверам и пропускать (или повторять) те, которые не проходят проверку подлинности.

1 ответ1

0

Используйте параметр StrictHostKeyChecking ; со страницы руководства:

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''.

Например:

$ 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

Приложение: Я не прочитал вопрос достаточно внимательно в первый раз и пропустил тот факт, что вы используете проверку ключей хоста на основе DNS. На самом деле я не знаю, поможет ли это в вашем случае, но я оставлю ответ, если кто-то сочтет его полезным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .