【问题标题】:EC2 fails to connect via FTPS, but works locallyEC2 无法通过 FTPS 连接,但在本地工作
【发布时间】:2013-09-25 17:33:08
【问题描述】:

我在 ec2 上运行 Python 2.6.5,并且我已将旧的 ftplib 替换为 Python2.7 中允许导入 FTP_TLS 的新版本。然而,下面的事情让我挂断了:

from ftplib import FTP_TLS<br> ftp = FTP_TLS('host', 'username', 'password')<br> ftp.retrlines('LIST')(15-20 分钟后超时)

我可以在几秒钟内在本地机器上成功运行这三行,但在 ec2 上却失败了。知道这是为什么吗?

谢谢。

【问题讨论】:

    标签: python amazon-web-services ftp amazon-ec2 ftplib


    【解决方案1】:

    这听起来确实是一个问题,与您在 FTP 连接上是否处于 PASSIVE 模式,以及连接的两端是否支持它有关。

    ftplib documentations 表示默认情况下它是打开的,这很遗憾,因为我打算建议你打开它。相反,我建议您set_debuglevel 到那里您可以看到协议的较低级别正在发生并查看您处于哪种模式。这应该为您提供有关如何继续的信息。要么你处于被动模式而另一端无法正确处理它,要么(希望)你不会,但你应该这样做。

    可以配置 FTP 和 FTPS(但不是 SFTP),以便服务器与客户端建立反向连接以进行实际传输,或者客户端与服务器建立第二个正向连接以进行传输。尤其是前者,只要涉及网络地址转换,就容易出现复杂情况。如果没有 TLS,一些防火墙实际上可以重写 FTP 会话流量以使其神奇地工作,但使用 TLS 由于加密,这是不可能的。

    当您尝试传输数据(LIST 需要在一个方向或另一个方向上的第二个连接)时,可能正在验证然后超时这一事实通常是需要被动模式的设置的典型症状,或者,有这个:

    在进行身份验证之前,像往常一样连接到端口 21,隐式保护* FTP 控制连接。保护数据连接需要用户通过调用 prot_p() 方法明确请求。

    ftps.prot_p()          # switch to secure data connection
    ftps.retrlines('LIST') # list directory content securely
    

    我不经常使用 FTPS,因为 SFTP 的问题要少得多,但如果你不这样做,远端服务器可能不会合作。

    *注意,我怀疑这句话试图说明 FTP_TLS “隐式保护 FTP 控制连接”,而不是显式保护数据连接。

    【讨论】:

    • 会不会是服务器阻塞了来自ec2的连接?我调用了 prot_p() 和 set_pasv('true')。我也成功返回了欢迎信息。正如我所提到的,我能够在本地列出文件——我 set_debuglevel 并观看了渲染——ec2 和 local 产生了相同的输出。
    【解决方案2】:

    如果您仍然遇到问题,可以尝试排除亚马逊防火墙问题。 (我假设您没有使用基于主机的防火墙。)

    如果您的 EC2 实例在 VPC 中,那么您可以在 AWS 管理控制台中:

    • 确保您拥有互联网网关
    • 确保您的 EC2 实例所在的子网配置了指向 Internet 网关的默认路由 (0.0.0.0/0)
    • 在入站和出站的安全组中允许来自所有来源的所有流量 (0.0.0.0/0)
    • 在入站和出站的网络 ACL 中允许来自所有来源的所有流量 (0.0.0.0/0)

    如果您的 EC2 实例不在 VPC 中,那么您可以在 AWS 管理控制台中:

    • 在入站安全组中允许来自所有来源的所有流量 (0.0.0.0/0)

    只能在测试环境中执行此操作! (显然)

    这将使您的 EC2 实例对来自互联网的所有流量开放。希望您会发现您的 FTPS 现在正在工作。然后您可以逐步重新应用安全规则,直到找出问题的原因。如果它仍然无法正常工作,那么 AWS 防火墙不是问题的原因(或者您有多个问题)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多