1

Я использую инструмент, который использует SSH для подключения к удаленному хосту. К сожалению, этот инструмент не принимает вводимые пользователем данные, и когда ключ удаленного хоста неизвестен, вызов зависает навсегда. Есть ли опция или набор опций, которые делают невозможным вызов ssh, когда ключ удаленного хоста неизвестен?

4 ответа4

0

В качестве обходного пути вы можете проверить, доверяет ли хост:

$ ssh-keygen -H -F host.example.com
# Host host.example.com found: line 205 type RSA
...

Обратите внимание, что в любом случае ssh-keygen завершается с 0, поэтому вы должны проверить вывод:

ssh-keygen -H -F host.example.com |
   grep -q found: || echo "host is not trusted" && exit 2
0

Вы можете использовать -oBatchMode=yes для сбоя, когда потребуется взаимодействие с пользователем (например, запрос пароля, проверка ключа удаленного хоста и т.д.)

0

Используйте -o StrictHostKeyChecking=yes для вызова ssh :

Если для этого флага установлено значение yes, ssh(1) никогда не будет автоматически добавлять ключи хоста в файл ~/.ssh/known_hosts и отказывается подключаться к хостам, чей ключ хоста был изменен.

По умолчанию ask и вот почему у вас есть проблема:

Если для этого флага задано значение ask (по умолчанию), новые ключи хоста будут добавлены к известным хост-файлам пользователя только после того, как пользователь подтвердит, что это именно то, что он действительно хочет сделать, и ssh откажется подключаться к хостам, чей ключ хоста изменился

-1

Вы можете добавить параметры по умолчанию в ~/.ssh/config, такие как:

Host *
    StrictHostKeyChecking no

Это отключает ssh, жалующийся на неизвестные или измененные ключи хоста.

Эти параметры можно ограничить набором хостов, указав соответствующий шаблон хоста.

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