Двойная аутентификация SFTP с пакетным файлом

Двойная аутентификация SFTP с пакетным файлом

Я пытаюсь подключиться к серверу, где (publickey,password)включена двойная аутентификация. Я использую sshpassдля предоставления пароля для автоматизации скрипта, но когда у меня есть пакетный файл с SFTP, подключение не удается без пакетного файла подключение успешно

export SSHPASS=helloworld

(sshpass -e sftp -b batfile.txt -o 'PasswordAuthentication=yes' \
 -o 'PreferredAuthentications=publickey,password' -o 'StrictHostKeyChecking=no' user@hostname)

Ошибка:

Permission denied (password).
Couldn't read packet: Connection reset by peer

Подключение прошло успешно без пакетного файла

(sshpass -e sftp -o 'PasswordAuthentication=yes' \
 -o 'PreferredAuthentications=publickey,password' -o 'StrictHostKeyChecking=no' user@hostname)

Я пробовал указать пароль в пакетном файле, но безуспешно.

Возможно ли то, чего я пытаюсь достичь sshpass, batchfileесли да, может ли кто-нибудь мне в этом помочь?

Пакетный файл:

echo  "Hey, I'm from Inside"  
!echo "Hey, I'm from Outside"

решение1

Это -bпредотвращает интерактивную аутентификацию (то, что вы пытаетесь имитировать с помощью sshpass).

Вместо этого вам нужно будет передавать команды в sshpassstdin.

sshpass -e sftp -o 'PasswordAuthentication=yes' \
 -o 'PreferredAuthentications=publickey,password' user@hostname < batfile.txt

Как здесь:
Как поместить команду sshpass в bash-скрипт?


Никогда не используйте StrictHostKeyChecking=no, если вас не волнует безопасность.

Связанный контент