Я использую настройку 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
? Причина в том, что без безопасных параметров для клиента и сервера загрузка файла работает правильно.
Будем весьма благодарны за любые предложения относительно причины ошибки или, чтобы лучше отладить проблему. Спасибо