我正在使用带有pyftpdlib
的FTP服务器设置,并且在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
}
});
从服务器日志(在stdout上),我得到以下信息:
[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
设置问题?原因是因为没有客户端和服务器的安全选项,文件上载才能正常进行。
任何对错误原因或更好地调试问题的建议将不胜感激。谢谢