-1

Я пытаюсь сделать sftp через скрипт оболочки Unix и получаю сообщение об ошибке

Host key verification failed. Connection closed

Однако, когда я делаю sftp вручную, как показано ниже, его работа

sftp -b batch_file user@remoteserver

batch_file содержит команды lcd , cd и put .

Автор сценария:

#get inputs parameters
file=$1
dir=$2
sftp_node=$3
dest_dir=$4
dol=$

original_dir='eval echo $dol$dir'
dest_dir='eval echo $dol$dest_dir'

cd $original_dir
sfile='ls -lt ${file}* | head -1'

#To execute sftp in batch mode

rm $SCRIPTDIR/sftp_batch_file.txt

echo "lcd $original_dir" > $SCRIPTDIR/sftp_batch_file.txt
echo "cd $dest_dir" >> $SCRIPTDIR/sftp_batch_file.txt
echo "put $sfile " >> $SCRIPTDIR/sftp_batch_file.txt

sftp -oPort=56050 -b $SCRIPTDIR/sftp_batch_file.txt user@servername
s=$?

if [ $s -eq 0]
then 
echo "$original_dir/$sfile sent to $dest_dir/$sfile  on server"
exit 0
fi

Журнал ручного запуска:

OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 февраля 2013 г. debug1: чтение данных конфигурации /etc /ssh /ssh_config debug1: применение параметров для * debug1: подключение к серверу [123.456.789.000] порт 12345. debug1: соединение установлено. debug1: файл идентификации /home/.ssh/id_rsa тип 1 debug1: файл идентификации /home/.ssh/id_rsa-cert тип -1 debug1: файл идентификации /home/.ssh/id_dsa тип -1 debug1: файл идентификации /home /.ssh /id_dsa-cert тип -1 debug1: файл идентификации /home/.ssh/id_ecdsa тип -1 debug1: файл идентификации /home/.ssh/id_ecdsa-cert тип -1 debug1: версия удаленного протокола 2.0, версия удаленного программного обеспечения SFTP Отладка сервера 1: нет совпадения: отладка SFTP-сервера: Включение режима совместимости для протокола 2.0. Отладка 1: строка локальной версии. SSH-2.0-OpenSSH_5.3. Отладка 1: Неуказанный сбой GSS. Незначительный код может предоставить дополнительную информацию: файл кэша учетных данных '/tmp /krb5cc_3732' не найден

debug1: неизвестный сбой GSS. Незначительный код может предоставить дополнительную информацию: файл кэша учетных данных '/tmp/krb5cc_3732' не найден

debug1: SSH2_MSG_KEXINIT отправлено debug1: SSH2_MSG_KEXINIT получено debug1: kex: сервер-> клиент aes128-cbc hmac-sha1 нет debug1: kex: клиент-> сервер aes128-cbc hmac-sha1 нет debug1: SSH2_MSG0G0_0G0_EXG_REX_0_0G050_0_RG_RG : ожидается SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT отправлено debug1: ожидается SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host '[server]': 12345 известно и соответствует ключу узла RSA. debug1: Найдено ключ в /home/.ssh/known_hosts:24 debug1: ssh_rsa_verify: подпись правильной debug1: SSH2_MSG_NEWKEYS послал debug1: ожидая SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS получил debug1: SSH2_MSG_SERVICE_REQUEST послал debug1: SSH2_MSG_SERVICE_ACCEPT получил debug1: авторизации, которые могут продолжать: пароль, ОткрытыйКлюче , клавиатурно-интерактивная отладка1: следующий метод аутентификации: publickey debug1: предложение открытого ключа: /home/.ssh/id_rsa debug1: сервер принимает ключ: pkalg ssh-rsa blen 277 debug1: чтение закрытого ключа PEM выполнено: введите RSA debug1: аутентификация прошла успешно (PublicKey). debug1: канал 0: новый [клиент-сеанс] debug1: вход в интерактивный сеанс. debug1: отправка среды. debug1: отправка env LANG = en_US.UTF-8 debug1: отправка подсистемы: sftp sftp> lcd sftp> cd sftp> положить имя файла Загрузка имени файла в / имя файла debug1: client_input_channel_req: канал 0 rtype ответ о состоянии выхода 0 debug1: channel 0: free : client-session, nchannels 1 debug1: очистка fd 0 O_NONBLOCK Передано: отправлено 4832, получено 2696 байт, за 0,6 секунды Байт в секунду: отправлено 8159.3, получено 4552.4, debug1: состояние выхода 0

Скрипт запуска журнала:

OpenSSH_7.5p1, OpenSSL 1.0.2m 2 ноября 2017 г. debug1: чтение данных конфигурации /etc /ssh /ssh_config debug1: init_func_ptrs success debug1: значение krb5 равно 1 debug1: значение gssapi равно 1 debug1: подключение к серверу [123.456.789.000] порт 12345. debug1: соединение установлено. debug1: key_load_public: нет такого файла или каталога debug1: идентификационный файл /home.ssh/identity типа -1 debug1: key_load_public: такого файла или каталога нет debug1: идентификационный файл /home.ssh/identity-cert type -1 debug1: включение совместимости режим для протокола 2.0 debug1: строка локальной версии SSH-2.0-OpenSSH_7.5 debug1: удаленный протокол версии 2.0, версия удаленного программного обеспечения SFTP-сервер debug1: нет соответствия: SFTP-сервер debug1: проверка подлинности на сервере: 12345 как «пользовательская» debug1: SSH2_MSG_KEXINIT отправлено debug1: SSH2_MSG_KEXINIT получил debug1: kex: алгоритм: diffie-hellman-group-exchange-sha256 debug1: kex: алгоритм ключа хоста: ssh-rsa debug1: kex: сервер-> клиентский шифр: aes128-cbc MAC: hmac-sha2-256 сжатие: нет debug1: Кекс: клиент-> сервер шифрования: AES128-CBC MAC: HMAC-sha2-256 сжатия: нет debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(2048 <8192 <8192) послал debug1: получил SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT послал debug1: получил SSH2_MSG_KEX_DH_GEX_REPLY debug1: Ключ хоста сервера: ssh-rsa SHA 256: U2JlOXEu69uw4l+TGqDBRxnaH+Mjf12WeHc4IGd6lcI debug1: проверка без идентификатора порта Сбой проверки ключа хоста. Соединение закрыто

Пожалуйста, помогите мне определить и устранить проблему.

1 ответ1

0

как вы проходите аутентификацию на сервере? Пакетный режим sftp не может работать с интерактивными методами аутентификации (он не запрашивает имя пользователя и пароль, вы должны предоставить учетные данные в командной строке)

если ваш sftp использует пароль, запустите:

sftp -b batch_file user:password@remoteserver

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .