Я пытаюсь сделать 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-сервера 1: включение режима совместимости для протокола 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_EX_RG_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 Аутентификация прошла успешно (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 Аутентификация прошла успешно (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: server-> клиентский шифр: aes128-cbc MAC: hmac-sha2-256 сжатие: нет debug1: kex: client-> сервер шифр: 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-SHA256 RSA: U2JlOXEu69uw4l + TGqDBRxnaH + Mjf12WeHc4IGd6lcI 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-SHA256 RSA: U2JlOXEu69uw4l + TGqDBRxnaH + Mjf12WeHc4IGd6lcI 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-SHA256 RSA: U2JlOXEu69uw4l + TGqDBRxnaH + Mjf12WeHc4IGd6lcI debug1: проверка без проверки ключа хоста идентификатора порта не удалось. Соединение закрыто
Пожалуйста, помогите мне определить и устранить проблему.
-oPort=56050
.
oPort
в вашей ручной команды в вопросе.
-v
переключатель в руководство и скрипт sftp
и покажите нам их вывод.