【问题标题】:Getting "I won't open a connection to" when connecting to FTP server from Google Compute Engine从 Google Compute Engine 连接到 FTP 服务器时出现“我不会打开连接”
【发布时间】:2015-04-19 06:01:56
【问题描述】:

我通过 ssh 连接到我的 Google Compute Engine 的虚拟机。并想从那里 ftp 到另一台服务器。它询问我的用户名和密码,我可以毫无问题地登录。但是当我执行lsget 时,我收到此错误:

500 I won't open a connection to 10.240.XX.XX (only to XX.XX.XX.XX)
ftp: bind: Address already in use

10.240.XX.XX 是我在ifconfig 结果中看到的内部 IP 地址。

如何使用 FTP 从另一台服务器传输文件? 系统:Debian7

【问题讨论】:

    标签: linux ftp connection debian google-compute-engine


    【解决方案1】:

    您正在使用 FTP 的主动模式连接到运行 Pure-FTPd 的服务器。在主动模式下,服务器必须连接回客户端才能打开数据传输连接(用于文件传输或目录列表)。为此,客户端在PORT 命令中将其 IP 地址发送到 FTP 服务器。

    如果 FTP 服务器在 GCE 专用网络之外,它显然无法连接回客户端机器,因为该机器位于防火墙和 NAT 之后。

    实际上,Pure-FTPd 明确检查PORT 命令中的 IP 地址是否与 FTP 控制连接的客户端 IP 地址匹配。如果客户端在 GCE 网络中发送其内部 IP 地址,它将不匹配。如果在这种情况下,Pure-FTPd 服务器直接拒绝传输(甚至不尝试连接)并显示错误消息,您将得到:

    我不会打开到...的连接(只到...)

    (其中第一个...是客户端在PORT命令中提供的IP地址[GCE私有网络内的本地地址),第二个...是外部[NATed]客户端的 IP 地址,如服务器所知)。


    即使客户端在PORT 命令中报告了外部 [NATed] 地址,它仍然无法工作,因为连接尝试不会通过 NAT 和防火墙。

    因此存在被动FTP模式,即客户端连接到服务器以打开数据传输连接。实际上,现在没有人使用主动模式。

    有关这些模式的详细信息,请参阅(我的文章)FTP connection modes

    所以,切换到被动模式。具体如何完成取决于客户。

    • 在最常见的 *nix ftp 命令行客户端中,使用-p 命令行开关,尽管默认情况下还是使用被动模式:

      -p 使用被动模式进行数据传输。允许在防火墙阻止的环境中使用 ftp 从外部世界返回到客户端计算机的连接。要求 ftp 服务器支持 移植 PASV 命令。由于安全原因,这是所有客户端(ftp 和 pftp)的默认设置 关注使用 PORT 传输模式。该标志仅出于兼容性目的而保留,没有任何作用 没有了。

    • 部分客户端还支持passive 命令。

    • 如果您在 Windows 上,则无法使用内置命令行 ftp.exe 客户端,因为它根本不支持被动模式。您必须安装第三方客户端。见How to use passive FTP mode in Windows command prompt?

    【讨论】:

    • 这也是我的问题;显然,并非所有 Linux ftp 客户端默认都使用被动模式。
    • Windows 上遇到此问题的任何人的注意事项(我意识到这个问题与 Windows 无关,但我曾经是并且我通过搜索“我不会打开到"):根据How to use passive FTP mode in Windows command prompt? 及其答案,Windows 的 native FTP 客户端(甚至最多 10 个)不支持被动模式,因此需要替代方案(对这个问题提到了 WinSCP)。
    【解决方案2】:

    使用被动模式启用您的 FTP,如果您已经连接,请输入

    ftp> passive
    Passive mode on.
    

    您目前在被动模式下使用 FTP。

    【讨论】:

    • 请注意 - 被动是一个布尔值,它将在 ftp 中的被动模式和主动模式之间切换。对于那些以前没有切换过模式的人来说,这可能会让人感到困惑。
    • 感谢您的解释。是的,当然,它会切换被动或主动模式。目前大多数 FTP 服务器使用被动模式作为默认连接。
    • @RizonBarns FTP 协议中没有默认模式。而且服务器无论如何都无法控制模式。所以“FTP Server 使用被动模式作为默认连接” 只是一派胡言。在每次传输之前选择模式的是 FTP 客户端。
    【解决方案3】:

    如果你在 windows 10 中使用 wsl2 linux 子系统:使用 pftp

    【讨论】:

      【解决方案4】:

      如果您使用 PsPad 编辑器并且遇到同样的问题,请尝试为您的连接设置此配置:

      【讨论】:

      • 什么是“这个配置”?请用文字描述,而不是截图。
      • 这不仅仅是您看到的屏幕截图,我写道这是设置您的连接工作的方式,我遇到了这个问题,我没有在任何地方找到解决方案,我今天通过我的我和自己想帮助别人不要像我一样浪费时间。
      • Are screenshots useful in answers? - “发布屏幕截图向用户展示某件事的工作原理并没有错,只要屏幕截图附有解释相同内容的文本信息单词"
      • 当然!只需写,“检查选项 XXX 以使其工作”。屏幕截图上有十几个选项。我们怎么知道什么是神奇的
      • 我尝试了所有选项,我使用了 SSL/TLS,还有 Prot P 设置,我检查了 MLDS 是否显示隐藏文件,因为有些人说服务器可能有问题隐藏设置。我还检查了 Prox 服务器以及现在检查的那些。最后我不知道为什么这个配置有效,但这有效,我也不能确定是否有一个神奇的复选框被选中。我一开始没有选择任何复选框。 (我一开始也有同样的问题)
      猜你喜欢
      • 2020-09-25
      • 2018-07-07
      • 2018-04-28
      • 2023-03-30
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      相关资源
      最近更新 更多