Старый вопрос, который заслуживает лучшего ответа.
Вы можете запретить интерактивное приглашение, не отключая StrictHostKeyChecking
(что небезопасно).
Включите следующую логику в ваш скрипт:
if [ -z `ssh-keygen -F $IP` ]; then
ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi
Проверяет, находится ли открытый ключ сервера в known_hosts
.Если нет, он запрашивает открытый ключ с сервера и добавляет его к known_hosts
.
Таким образом, вы подвергаетесь атаке «Человек посередине» только один раз, что может быть смягчено с помощью:
- , гарантирующего, что сценарий впервые подключается по безопасному каналу
- проверка журналов или известных_хостов для проверки отпечатков пальцев вручную (выполняется только один раз)