pyftpdlib启用ftps传输

服务器端源代码修改

都是修改的主py程序,例如 ftp.py

  1. 虚拟环境的pip要install模块pyopenssl
    -- TLS_FTPHandler需要这个库来支持
  2. 将导入的FTPHandler换成TLS_FTPHandler
# from pyftpdlib.handlers import FTPHandler
from pyftpdlib.handlers import TLS_FTPHandler
  1. 将handler的获取由FTPHandler换成TLS_FTPHandler
# handler = FTPHandler  # ftp传输
handler = TLS_FTPHandler  # ftps传输 = ftp + ssl
  1. 添加如下ssl相关代码, my_key_cert.pem就是openssl生成pyftpdlib启用ftps所需文件里做出来的pem文件
# ssl加密
# 导入private key + certification的pem文件(上半截是私钥,下半截是证书)
handler.certfile = 'my_key_cert.pem'
# requires SSL for both control and data channel 启用ssl加密传输
# handler.tls_control_required = True  # 控制连接启用ssl加密
# 我个人的感觉是,如果是开了这个控制连接加密,那么FTP刷新或者打开目录时经常要卡顿,卡的时间稳定在21秒左右,提示的是[正在协商密码],如果把这个控制连接加密关掉,速度就快多了.
handler.tls_data_required = True  # 数据连接启用ssl加密

通过上述修改, 就在服务器端把ftp的传输改为ftps了


客户端设置(LeapFTP 3)

只需要在站点管理里, 把当前ftp服务器的协议由FTP改为 FTP/SSL(明白)或者 FTP 外部SSL(认证TLS) 即可

你可能感兴趣的:(pyftpdlib启用ftps传输)