配置防火墙端口与被动模式后,Windows PowerShell FTP连接异常求助
解决PowerShell FTP连接的
150 opening ascii mode data connection问题 针对你遇到的PowerShell连接FTP失败的情况,可从以下几个方向排查:
强制指定被动模式:
原生PowerShell的ftp命令行工具默认可能未启用被动模式(即使系统全局配置是被动)。在执行LIST命令前,先输入passive命令切换到被动模式。如果是用批处理脚本,可在脚本中加入该命令,示例脚本:open 192.XXX.XXX.XXX username password passive dir quit用
ftp -s:ftp_script.txt执行脚本。切换传输模式:
错误提示提到ASCII模式,部分服务器或网络环境对ASCII模式的数据连接兼容性较差。尝试切换到二进制模式,在脚本中加入binary命令后再执行文件列表或传输操作。检查客户端防火墙出站规则:
服务器已开放被动模式所需端口,但客户端防火墙可能限制了出站的1024-65535端口(被动模式下客户端会随机开启这些端口接收数据)。确认客户端防火墙允许FTP相关的出站流量,或直接开放该端口范围的出站权限。查看服务器FTP日志:
150 opening ascii mode data connection是服务器的正常响应,后续可能存在数据连接失败的情况(比如425错误)。查看服务器端的FTP日志,获取完整的错误信息,定位具体故障点。验证PowerShell的FTP实现方式:
如果你用的是.NET类(如FtpWebRequest),需确保显式设置被动模式:$ftpRequest = [System.Net.FtpWebRequest]::Create("ftp://192.XXX.XXX.XXX/") $ftpRequest.Method = [System.Net.WebRequestMethods+Ftp]::ListDirectory $ftpRequest.Credentials = New-Object System.Net.NetworkCredential("username", "password") $ftpRequest.EnablePassive = $true # 强制开启被动模式
内容的提问来源于stack exchange,提问作者Hsinhsin Hung
相关产品推荐
相关产品推荐

