IIS FTP 服务器停止接受连接,实例重新启动后返回“421 服务不可用,远程服务器已关闭连接。”错误消息。该问题似乎不是防火墙问题。
我在运行 Windows Server 2012 R2、IIS 版本 8.5 的 EC2 实例上设置了一个 IIS FTP 服务器。我的客户端只需要普通的 FTP。(我之前在同一个实例上使用 Cygwin sshd 设置了一个 SFTP 服务器,运行良好。)我设置了“默认”IIS FTP 服务器,它运行良好,持续了 2 天,直到在文件传输过程中挂起。根据 AWS 监视器,CPU 被固定在 100%。我无法通过 RDP 进入实例,因此我不得不重新启动它。从那时起,我就无法连接到 IIS FTP 服务器。根据任务管理器,“ftpsvc”进程状态为正在运行。我已经多次停止和启动它。Windows 防火墙已关闭,AWS 防火墙的端口 20、21 和 50,000-51,000 处于打开状态。自它停止工作以来,没有更改任何设置。
从服务器实例上的本地命令提示符,FTP 失败:
> ftp localhost
Connected to MYINSTANCE
Connection closed by remote host.
从远程计算机,FTP 失败:
$ ftp [email protected]
Connected to xx.xx.xx.xx
421 Service not available, remote server has closed connection.
从远程机器上,SFTP 的工作方式如下:
$ sftp [email protected]
[email protected]'s password: ****
Connected to xx.xx.xx.xx
我对 IIS 不太熟悉,FTP 服务似乎正在运行,但我不知道为什么在实例重启后停止允许连接。请注意,EC2 实例已分配弹性 IP,因此其公共 IP 地址与问题重启之前的相同。
非常感谢任何建议!如果我无法解决问题,我计划启动另一个 EC2 实例并从头开始设置新服务器。
感谢您的建议 Mass Nerder。
FTP 服务器正在向 inetpub/logs/LogFiles/FTPSVC2 写入数据,最新条目是 5 天前的,即 2014 年 10 月 16 日,其中没有任何看起来像错误的内容。IIS 事件日志是空的。我确实注意到本地服务器事件日志中有一些周期性的 sshd 错误,但没有任何详细信息。即使在我关闭 sshd 之后,FTP 服务仍然无法连接。
netstat -anb 显示 ftpsvc 正在监听端口 21:
Proto Local Address Foreign Address State
TCP 0.0.0.0:21 0.0.0.0:0 LISTENING
ftpsvc
我已经创建了几个 FTP 测试用户,但尝试连接时仍然出现同样的错误。
我将尝试“干净”的 WinServer 2012 测试实例,看看是否可以让 FTP 正常工作。
答案1
抱歉,问题出在 IIS FTP 站点绑定中的错误设置。EC2 实例有 2 个 IP 地址,一个是私有 IP 地址,一个是公共 IP 地址。FTP 服务器似乎设置了 EC2 实例私有 IP 地址,当实例重新启动时,它获得了不同的私有 IP,但使用弹性 IP 功能重新分配了相同的公共 IP。活到老学到老。
答案2
根据 Microsoft 的说法,错误 421 意味着
“421 服务不可用,正在关闭控制连接。如果服务知道必须关闭,这可能是对任何命令的答复。”
https://support.microsoft.com/kb/969061
您是否检查过事件日志以查看是否存在与此相关的错误?
是否netstat -anb
显示服务正在运行并在正确的端口上列出?
您是否尝试过与其他用户合作?