Я пытаюсь подключиться к серверу, где (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
).
Вместо этого вам нужно будет передавать команды в sshpass
stdin.
sshpass -e sftp -o 'PasswordAuthentication=yes' \
-o 'PreferredAuthentications=publickey,password' user@hostname < batfile.txt
Как здесь:
Как поместить команду sshpass в bash-скрипт?
Никогда не используйте StrictHostKeyChecking=no
, если вас не волнует безопасность.