Для OpenSSH существует BatchMode, который в дополнение к отключению запроса пароля, должен отключить запросы для пароля (паролей) для ключей.
BatchMode
Если установлено на “да”, пароль/пароль, запрашивающий, будет отключен. Эта опция полезна в сценариях и других пакетных заданиях, где никакой пользователь не присутствует для предоставления пароля. Аргумент должен быть “да” или "нет". Значение по умолчанию является "нет".
Демонстрационное использование:
ssh -oBatchMode=yes -l <user> <host> <dostuff>
Добавьте следующее к Вашему ~/.ssh/config
:
PasswordAuthentication no
и отключить аутентификацию по паролю на сервере, добавьте ту же строку к /etc/ssh/sshd_config
и перезапуск sshd
.
На командной строке (или ~/.ssh/config
) можно установить PreferredAuthentications
.
PreferredAuthentications=publickey
Вот пример фрагмента скрипта sftp bash. Я использую "-o BatchMode=Yes", чтобы отключить запрос пароля в случае сбоя. И проверьте код возврата frp, чтобы проверить, не удалось ли установить ftp-соединение.
sftp -o "IdentityFile=<YOUR_IDENTTIY_FILE>" -o "BatchMode=Yes" userName@ftpserver.com <<EOF
cd /$remotepath
mget *.csv $localpath/download
quit
EOF
exit_code=$?
if [[ $exit_code != 0 ]]; then
echo "sftp error, failed to connect to ftp server" >&2
exit 1
fi