搭建:
Windows Server 2012R2 FTP服务介绍及搭建_windows2012server r2ftp怎么做?-CSDN博客
问题:
https://www.cnblogs.com/123525-m/p/17448357.html
Java使用
被动FTP(PASV)
被动FTP模式在数据连接建立过程中,由服务器端发起数据端口连接,客户端被动接受。这对于客户端位于防火墙或NAT之后的场景特别有用。
import org.apache.commons.net.ftp.FTPClient;
FTPClient ftpClient = new FTPClient();
ftpClient.enterLocalPassiveMode(); // 进入被动模式
ftpClient.connect(server, port);
ftpClient.login(user, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// ...进行文件传输操作...
ftpClient.logout();
ftpClient.disconnect();
主动FTP(PORT)
主动FTP模式在数据连接建立过程中,由客户端发起数据端口连接,服务器端被动接受。主动FTP模式在客户端和服务器端都需要进行适当的配置以支持这种模式。
要切换到主动FTP模式,你需要更改FTP服务器的配置,这可能涉及到与你的网络管理员或服务提供商进行沟通。对于Java代码,你可以使用以下方式:
import org.apache.commons.net.ftp.FTPClient;
FTPClient ftpClient = new FTPClient();
ftpClient.enterLocalActiveMode(); // 进入主动模式
ftpClient.connect(server, port);
ftpClient.login(user, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// ...进行文件传输操作...
ftpClient.logout();
ftpClient.disconnect();
从被动FTP到主动FTP的转换
如果你需要从被动FTP切换到主动FTP,并且你无法更改FTP服务器的配置(例如,你正在使用一个你不能更改其设置的第三方FTP服务器),那么你需要更改你的客户端配置。你可以通过以下步骤实现:
- 创建一个新的临时端口。这个端口将用于建立数据连接。你可以使用任何你喜欢的工具或库来创建这个端口。例如,你可以使用Java的
ServerSocket
类来创建一个本地服务器。 - 配置你的FTP客户端使用这个临时端口。这可以通过在创建
FTPClient
实例时设置其本地IP和端口来实现。例如:
FTPClient ftpClient = new FTPClient();
ftpClient.setLocalPort(port); // 设置本地端口为你的临时端口
ftpClient.enterLocalActiveMode(); // 进入主动模式
ftpClient.connect(server, port);
ftpClient.login(user, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// ...进行文件传输操作...
ftpClient.logout();
ftpClient.disconnect();
这样,你的FTP客户端将使用你指定的本地端口来建立数据连接,而不是由服务器端发起连接。这实际上是模拟了主动FTP的工作方式。但请注意,这种方法可能不适用于所有情况,特别是当你的客户端位于防火墙或NAT之后时。在这种情况下,你可能需要找到其他方法来解决问题,例如配置你的防火墙或NAT设备来允许这种类型的连接。
Windows FTP服务设置
需要注意的是被动端口设置完后要重启一下【Microsoft FTP Service】服务才能生效
如何配置被动模式(PASV)的数据端口?
1、打开IIS管理器,点击左侧的服务器,进入服务器设置主页找到 FTP功能 中的 FTP防火墙支持 点击进入
2、在数据通道端口范围中填写端口范围,例如51025-51050,(如果设置一个端口,例如设置50001-50001)然后点击 应用 设置
3、 在开始菜单 >> 管理工具 >> 服务 中,找到【Microsoft FTP Service】服务,重启该服务才能生效
使用ftp服务端口不能通过外网访问,可以用nps透传 需要注意的是 iis防火墙的外部IP地址要设置成透传后的外部地址
如果是云服务器 在设置完被动端口范围后,云服务器安全组开放下这个端口范围,然后重新连接FTP正常链接了
常见错误:
创建ftp用户之后,配置好了FTP的身份验证和FTP的认证规则,但是无法访问。
原因是“FTP”和“Anonymous”是保留字。不能创建包含这些名称的> IIS 管理器用户帐户。
注意事项:
之前FTP动态端口需要开放1024-65535,但由于现有受支持的Windows操作系统动态端口范围有调整为49152-65535
Windows上FTP搭建及主被动传输模式测试-腾讯云开发者社区-腾讯云