Завершить сеанс scp, если ключ недействителен, без запроса пароля
У меня есть скрипт для мониторинга удаленного состояния моих серверов. Для этого я запускаю скрипт на каждой удаленной машине, который записывает информацию о времени безотказной работы, загрузке процессора, версии Distro в файл журнала. Сценарий на моем главном сервере запрашивает их серверы, выполняя scp этих файлов следующим образом: scp -i ~/.ssh/id_rsa pingmonitor@IP:~/pingmon.dat ./
, У меня есть некоторые машины, для которых эта информация должна быть запрошена, и другие, где удаленные серверы не предоставляют эту информацию.
Я хочу запустить scp с закрытым ключом на главном сервере, и в случае успеха файл будет получен. Если ключ не был добавлен на удаленный сервер, произойдет сбой scp, и больше ничего не нужно делать.
Проблема заключается в том, что если сервер не был настроен для доступа по ssh ранее (недоступно в known_hosts), он останавливает сценарий и выдает запрос: "Невозможно установить подлинность хоста. Вы уверены, что хотите продолжить подключение (да нет)?". Если было введено "да", он запрашивает пароль пользователя примерно 3 раза.
Я попытался удалить да / нет, и пароль запрашивается путем отправки по трубопроводу из файла, который содержит три новых строки, но это не мешает ему запрашивать пароль
Как я могу автоматизировать сценарий так, что если закрытый ключ недействителен, он останавливает сеанс и возвращает управление сценарию, не останавливая и не запрашивая пароль?
Я использую Debian Wheezy.
1 ответ
Задавать PasswordAuthentication=no
в вашем ssh_config (скорее всего в ~/.ssh/config
). Если это не работает, вы также можете установить NumberOfPasswordPrompts=0
до нуля, поэтому вам не будет предложено ввести пароль.