«Сброс соединения с помощью peer» на lftp при загрузке файлов

Я работаю над проектом, в котором несколько Raspberry Pis собирают данные датчиков и записывают их в несколько файлов несколько раз в день. Я хотел написать небольшой скрипт для загрузки всех этих файлов на FTP-сервер в конце дня с помощью crontab. Поэтому я написал сценарий с использованием lftp, который работал сначала, но позже начал показывать ошибку.

Ниже приведен сценарий и подробный вывод. Как это исправить?

#!/bin/bash HOST='ftp://xyz.com' USER='xxxxxx' PASS='xxxxxx' TARGETFOLDER='/home/xxxx' SOURCEFOLDER='/home/pi/yyyy' lftp -f " open $HOST user $USER $PASS debug -o lftp_debug.txt lcd $SOURCEFOLDER mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER bye "

output:

---- Connecting to xyz.com (xx.xx.xx.xx) port 21 <--- 220 (vsFTPd 3.0.3) ---> FEAT <--- 211-Features: <--- EPRT <--- EPSV <--- MDTM <--- PASV <--- REST STREAM <--- SIZE <--- TVFS <--- 211 End ---> USER XXXX <--- 331 Please specify the password. ---> PASS XXXX <--- 230 Login successful. ---> PWD <--- 257 "/home/XXXX" is the current directory ---> MKD /home <--- 550 Create directory operation failed. ---> MKD /home/XXXX <--- 550 Create directory operation failed. ---- CWD path to be sent is `/home/XXXX' ---> CWD /home/XXXX <--- 250 Directory successfully changed. ---> PASV **** control-socket: Connection reset by peer ---- Closing data socket ---- Closing control socket

UPDATE 2

Забавно, когда я вхожу на тот же FTP-сервер через ' FTP 'с одним и тем же пользователем и передать его работает как шарм, но когда я вхожу через lftp с тем же пользователем и передаю, я смог войти на сервер, но как только я дам команду ls, он показывает нижеследующий мощность.

lftp user@xyz.com:~> ls `ls' at 0 [Delaying before reconnect: 24]
0
задан 17 November 2017 в 14:27

2 ответа

Не используйте ftp. Проблема, с которой вы сталкиваетесь, скорее всего связана с общей путаницей направления соединения в FTP. FTP использует два порта: одно командное соединение и одно соединение для передачи данных. Традиционно соединение с командами было от клиента к серверу, а соединение данных с сервера на клиент!

PASV - противоположное; он инструктирует сервер прослушивать подключение к данным от клиента и сообщать клиенту, что это номер порта. Похоже, что это (неожиданное для многих) поведение - это то, что вас кусает.

Однако, по-моему, продолжение использования FTP сегодня не является хорошей альтернативой. Это просто устаревший, безопасный и разумный протокол.

У вас есть несколько альтернатив FTP. Если вы используете аутентификацию, scp / sftp является хорошей альтернативой. Для этого требуется ровно один порт, он аутентифицирован и зашифрован.

Если вам нужны анонимные сообщения, http (s) является хорошей альтернативой. Или через запрос POST, либо с помощью WebDAV. Http также может быть настроен на использование аутентификации и может быть зашифрован с помощью TLS (https). Он также открывает только один канал для данных и команд.

FTP - это протокол 40 лет. Это выходит из употребления, и, как следствие, программное обеспечение не получает такого большого внимания, как более популярные веб-серверы и ssh-серверы, и, следовательно, существует более высокая вероятность серьезных уязвимостей, сохранившихся в исходном коде.

Кроме того команда для SCP'ing будет намного проще: scp * $user@$host:$targetfolder - и вы можете использовать аутентификацию на основе ключа, чтобы избежать паролей в скрипте!

0
ответ дан 18 July 2018 в 12:28

Не используйте ftp. Проблема, с которой вы сталкиваетесь, скорее всего связана с общей путаницей направления соединения в FTP. FTP использует два порта: одно командное соединение и одно соединение для передачи данных. Традиционно соединение с командами было от клиента к серверу, а соединение данных с сервера на клиент!

PASV - противоположное; он инструктирует сервер прослушивать подключение к данным от клиента и сообщать клиенту, что это номер порта. Похоже, что это (неожиданное для многих) поведение - это то, что вас кусает.

Однако, по-моему, продолжение использования FTP сегодня не является хорошей альтернативой. Это просто устаревший, безопасный и разумный протокол.

У вас есть несколько альтернатив FTP. Если вы используете аутентификацию, scp / sftp является хорошей альтернативой. Для этого требуется ровно один порт, он аутентифицирован и зашифрован.

Если вам нужны анонимные сообщения, http (s) является хорошей альтернативой. Или через запрос POST, либо с помощью WebDAV. Http также может быть настроен на использование аутентификации и может быть зашифрован с помощью TLS (https). Он также открывает только один канал для данных и команд.

FTP - это протокол 40 лет. Это выходит из употребления, и, как следствие, программное обеспечение не получает такого большого внимания, как более популярные веб-серверы и ssh-серверы, и, следовательно, существует более высокая вероятность серьезных уязвимостей, сохранившихся в исходном коде.

Кроме того команда для SCP'ing будет намного проще: scp * $user@$host:$targetfolder - и вы можете использовать аутентификацию на основе ключа, чтобы избежать паролей в скрипте!

0
ответ дан 24 July 2018 в 19:58

Другие вопросы по тегам:

Похожие вопросы: