“421 活动数据通道超时。”使用来自 SQL 存储过程的 Azure VM 的 FTP 客户端连接
"421 Active data channel timed out." with FTP client connection from Azure VM from SQL stored procedure
我们正在从 Windows 服务器盒迁移到 Azure 上的虚拟机。我们的 SQL 存储过程使用 Integration Services 包生成提要文件并将它们上传到客户端 ftp 服务器。
我们通过构建脚本文件并在 Windows 上使用本机 ftp.exe
客户端来实现此目的。我的脚本文件如下所示:
open ftp.ourserver.net
myusername
mypassword123
lcd G:\
cd /
prompt
put "G:\DataFeeds\SmithCo_02272017.txt" "SmithCo_DailyFeed.txt"
bye
这在我们的旧服务器上运行良好。当我使用命令提示符 运行 这段代码时,我得到:
421 Active data channel timed out.
我可以在该机器上使用 WinSCP 客户端通过基本连接手动上传文件。
我认为这是一个端口问题,所以我在 Windows 防火墙中为端口 21 创建了一个出站规则,允许所有连接。
然后我也在 Azure 中为端口 21 创建了一个端点。
是否还有其他步骤可以打开它或我可能遗漏了什么?
Windows 命令行 ftp.exe
仅支持 FTP 活动模式。在主动模式下,服务器必须重新连接到客户端以建立文件传输的数据连接。更多超过 ftp.exe
不允许您选择,数据连接使用哪个端口。它随机选择 1024 以上的任何可用端口号。因此您必须为 1024 以上的所有端口创建端点。这可能是您不想做的事情。虽然你可以试试。
WinSCP 可以工作,因为它(作为大多数现代 FTP 客户端)默认使用被动模式。对于被动模式,客户端不需要开放任何端口。
阅读我关于 network configuration for FTP active and passive connection modes 的文章了解详情。
由于 WinSCP 适合您,您可以使用 WinSCP scripting interface 替换您的 ftp.exe
脚本。
就像 (ftp.txt
):
open ftp://myusername:mypassword123@ftp.ourserver.net/
lcd G:\
cd /
put "G:\DataFeeds\SmithCo_02272017.txt" "SmithCo_DailyFeed.txt"
exit
(尽管 lcd
在您和 WinSCP 脚本中都是多余的)。
和 运行 脚本如下:
winscp.com /script=ftp.txt
请参阅 converting Windows FTP script to WinSCP script 的指南。
(我是WinSCP的作者)
我们正在从 Windows 服务器盒迁移到 Azure 上的虚拟机。我们的 SQL 存储过程使用 Integration Services 包生成提要文件并将它们上传到客户端 ftp 服务器。
我们通过构建脚本文件并在 Windows 上使用本机 ftp.exe
客户端来实现此目的。我的脚本文件如下所示:
open ftp.ourserver.net
myusername
mypassword123
lcd G:\
cd /
prompt
put "G:\DataFeeds\SmithCo_02272017.txt" "SmithCo_DailyFeed.txt"
bye
这在我们的旧服务器上运行良好。当我使用命令提示符 运行 这段代码时,我得到:
421 Active data channel timed out.
我可以在该机器上使用 WinSCP 客户端通过基本连接手动上传文件。
我认为这是一个端口问题,所以我在 Windows 防火墙中为端口 21 创建了一个出站规则,允许所有连接。
然后我也在 Azure 中为端口 21 创建了一个端点。
是否还有其他步骤可以打开它或我可能遗漏了什么?
Windows 命令行 ftp.exe
仅支持 FTP 活动模式。在主动模式下,服务器必须重新连接到客户端以建立文件传输的数据连接。更多超过 ftp.exe
不允许您选择,数据连接使用哪个端口。它随机选择 1024 以上的任何可用端口号。因此您必须为 1024 以上的所有端口创建端点。这可能是您不想做的事情。虽然你可以试试。
WinSCP 可以工作,因为它(作为大多数现代 FTP 客户端)默认使用被动模式。对于被动模式,客户端不需要开放任何端口。
阅读我关于 network configuration for FTP active and passive connection modes 的文章了解详情。
由于 WinSCP 适合您,您可以使用 WinSCP scripting interface 替换您的 ftp.exe
脚本。
就像 (ftp.txt
):
open ftp://myusername:mypassword123@ftp.ourserver.net/
lcd G:\
cd /
put "G:\DataFeeds\SmithCo_02272017.txt" "SmithCo_DailyFeed.txt"
exit
(尽管 lcd
在您和 WinSCP 脚本中都是多余的)。
和 运行 脚本如下:
winscp.com /script=ftp.txt
请参阅 converting Windows FTP script to WinSCP script 的指南。
(我是WinSCP的作者)