Сброс соединения при попытке загрузить файл через FTPS - PullRequest
0 голосов
/ 25 мая 2019

Я использую настройку FTP-сервера с pyftpdlib и работаю в режиме FTP+SSL на 127.0.0.1:2121. Я использую самозаверяющий ключ и файл сертификата. Конфигурация для сервера приведена ниже:

main.py

authorizer = DummyAuthorizer()
authorizer.add_user('XXXX', 'XXXX', './test_home', perm="elradfmwMT")

handler = TLS_FTPHandler
handler.certfile = 'cert.pem'
handler.keyfile = 'key.pem'
handler.authorizer = authorizer

server = FTPServer(('127.0.0.1', '2121',), handler)

if __name__ == '__main__':
    server.serve_forever()

Я подключаюсь к серверу с помощью nodejs установки клиента с использованием пакета node-ftp. Вот как настроен клиент:

ftpc.js

const Ftpc = require('ftp');
const fs = require('fs');

const client = new Ftpc();

client.connect({
    host: '127.0.0.1',
    port: 2121,
    user: 'XXXX',
    password: 'XXXX',
    secure: true,
    secureOptions: {
        rejectUnauthorized: false
    }
});

Из журнала сервера (на стандартный вывод) я получаю следующее:

[I 2019-05-26 00:04:52] 127.0.0.1:37350-[] FTP session opened (connect)
[I 2019-05-26 00:04:52] 127.0.0.1:37350-[XXXX] USER 'XXXX' logged in.
[I 2019-05-26 00:04:52] 127.0.0.1:37350-[XXXX] FTP session closed (disconnect).

Из вывода ошибки клиента на stoud я получаю:

Server send pyftpdlib 1.5.5 ready.
[!] File upload error
{ Error: read ECONNRESET
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:111:27) errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read' }
[!] Closing client connection

Ошибка возникает при попытке загрузить файл, используя client.put. Файл, который я пытаюсь загрузить, имеет следующие разрешения:

-rw-r--r--  1 <CURRENT_USER> users  893150 May 19 11:42 YYY.ZZZ

На основании приведенной ниже настройки я не уверен в характере ошибки. Если сервер отключает соединение, это из-за проблемы в настройках handler.keyfile и handler.certfile? Причина в том, что без безопасных параметров для клиента и сервера загрузка файла работает правильно.

Будем весьма благодарны за любые предложения относительно причины ошибки или, чтобы лучше отладить проблему. Спасибо

...