Как отправить пароль, используя пакетный файл sftp
Я пытаюсь загрузить файл с сайта sftp с помощью пакета script. Я получаю следующую ошибку:
Permission denied (publickey,password,keyboard-interactive).
Couldn't read packet: Connection reset by peer
При выполнении команды:
sftp -b /home/batchfile.sftp <user>@<server ip>:<folder>
batchfile.sftp
включает следующие данные:
password
lcd [local folder]
cd [sftp server folder]
get *
bye
Примечание: он работает при запуске в приглашении как
sftp <user>@<server ip>:<folder>
Но мне нужна возможность автоматически вводить пароль.
Ответы
Ответ 1
Вы хотите установить программу sshpass. Тогда:
sshpass -p YOUR_PASSWORD sftp -oBatchMode=no -b YOUR_COMMAND_FILE_PATH [email protected]
Очевидно, что лучше настроить аутентификацию открытого ключа. Используйте это только в том случае, если это невозможно сделать по любой причине.
Ответ 2
Если вы создаете кучу команд, которые должны быть запущены, вызовите это script из терминала, вы можете попробовать следующее.
sftp [email protected] < /path/to/command/list
Затем вам будет предложено ввести ваш пароль (как обычно), однако после этого будут выполняться все команды в script.
Это явно не полностью автоматизированная опция, которая может использоваться в задании cron
, но может использоваться с терминала.
Ответ 3
Я советую вам запустить sftp с опцией -v. Становится намного легче понять, что происходит.
В руководстве четко указано:
Окончательный формат использования позволяет использовать автоматические сеансы с использованием -b вариант. В таких случаях необходимо настроить неинтерактивную аутентификацию чтобы избежать необходимости вводить пароль во время подключения (см. sshd (8) и ssh-keygen (1)).
Другими словами, вы должны установить аутентификацию публики. Затем вы сможете запустить пакет script.
P.S.
Неправильно вводить пароль в пакетный файл.
Ответ 4
Вы говорите о командных файлах, правильно ли я предполагаю, что вы говорите о системе Windows? Если это так, вы не можете использовать sshpass, и вам придется переключиться на другой вариант.
Два из таких вариантов, которые следуют диаметрально противоположным философиям:
- psftp: инструмент командной строки, который вы можете вызывать из своих скриптов; psftp является частью пакета PuTTY, и вы можете найти его здесь http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
- Syncplify.me FTP Script: скриптовый FTP/S и SFTP-клиент для Windows, который позволяет вам хранить ваш пароль в зашифрованных "файлах профиля"; посмотрите здесь http://www.syncplify.me/products/ftp-script/
В любом случае настоятельно рекомендуется переключение с паролей на аутентификацию PKI.