本文主要介绍在使用ossftp时可能遇到的问题及解决方案。

  • 连接FTP Server时,无法连接到服务器的

    有两种可能:
    • 输入的AccessKeyID和AccessKeySecret有误。

      解决:请输入正确的信息后再重试。

    • 所用的AccessKey信息为RAM子账户的AccessKey,而子账户不具有List Buckets权限。

      解决:当使用子账户访问时,请在控制页面中指定Bucket endpoints, 即告诉FTP Server某个Bucket应该用哪个Endpoint来访问。同时,子账户也需要一些必须的权限。关于使用RAM访问OSS时的访问控制,请参考文档访问控制。具体如下:

      • 只读访问

        OSS FTP工具需要的权限为ListObjects、GetObject、HeadObject。关于RAM策略配置请参见如何构建RAM Policy

      • 上传文件

        如果允许RAM子账户上传文件,还需要PutObject权限。

      • 删除文件

        如果允许RAM子账户删除文件,还需要DeleteObject权限。

  • 在Linux下运行FTP Server,之后用FileZilla连接时遇到501错误
    501 can't decode path (server filesystem encoding is ANSI_X3.4-1968)
    此类错误通常是因为本地的中文编码有问题。在将要运行start.sh的终端中输入下面的命令,然后再重新启动即可。
    $ export LC_ALL=en_US.UTF-8; export LANG="en_US.UTF-8"; locale
  • 登录成功后List文件超时导致连接断开

    原因一般是Bucket根目录下的文件数或文件夹过多。 登录ftp后,ftpserver会尝试将Bucket根目录下的所有文件/文件夹List出来,每次可以List出1000个文件/文件夹。如果根目录下有100万以上的文件/文件夹,则会导致1000次以上的http请求,非常容易超时。

  • 运行ftpserver的机器由于端口限制导致数据传输不成功

    由于ftp协议的控制端口和数据端口不同,当ftpserver工作在被动模式下,每当需要传输数据时,ftpserver会打开1个随机端口,等待客户端来连接。所以当ftpserver所在机器有端口限制时,可能会导致数据无法正常传输。

    解决办法是当运行ftpserver.py时,通过指定--passive_ports_start--passive_ports_end参数来设置本地端口的起止范围,然后将该范围的端口都打开。

  • 客户端和ftpserver之间的连接经常断开

    各个ftp客户端一般都有超时设置,可以设置为不超时。以FileZilla工具为例,在设置->连接里,可以将超时设置为0。