菜鸟科技网

FTP命令如何指定端口连接?

核心概念:主动模式 vs. 被动模式

在理解如何指定端口之前,必须先了解 FTP 的两种工作模式,因为数据连接的建立方式完全不同。

FTP命令如何指定端口连接?-图1
(图片来源网络,侵删)
  • 主动模式

    1. 控制连接:客户端从随机端口(50000)连接到服务器的 21 端口。
    2. 数据连接:服务器主动从服务器的 20 端口连接回客户端的随机端口(50000)。
    • 特点:服务器主动发起连接,可能会被客户端的防火墙拦截。
  • 被动模式

    1. 控制连接:客户端从随机端口(50000)连接到服务器的 21 端口。
    2. 数据连接:客户端向服务器请求一个被动连接,服务器会告知客户端一个随机端口(2121),然后客户端主动连接到这个端口。
    • 特点:客户端主动发起所有连接,更容易通过防火墙,是目前更常用的模式。

使用 ftp 命令行客户端

这是最经典的方式,适用于 Linux/macOS 终端或 Windows 的命令提示符。

连接时指定控制端口 (Port 21)

通常情况下,FTP 的控制连接端口是固定的 21,所以不需要特别指定,但如果你的 FTP 服务器修改了默认端口,你可以这样连接:

FTP命令如何指定端口连接?-图2
(图片来源网络,侵删)
ftp -p <服务器IP或域名>:<控制端口>
  • -p--passive 的缩写,强烈建议使用被动模式
  • <控制端口> 是你连接服务器的那个端口,默认是 21。

示例:连接到 IP 为 168.1.100,控制端口为 2121 的 FTP 服务器

ftp -p 192.168.1.100:2121

执行后,系统会提示你输入用户名和密码。

连接后指定数据端口 (在被动模式下)

一旦你通过上述方式建立了控制连接(默认就是被动模式),数据连接的端口是由服务器在 PASV 命令交互中动态分配的。你无法在客户端直接指定数据端口,客户端会自动连接到服务器告诉它的那个随机端口。

在主动模式下指定客户端数据端口

如果你在主动模式下工作,客户端的数据端口通常是随机的,如果你想指定一个固定的端口(50000),你需要使用 port 命令,但这在现代系统中很少使用,因为防火墙会阻止服务器的入站连接。

示例(不推荐,仅作了解):

  1. 先以主动模式连接(不加 -p)。
  2. 使用 port 命令,这个命令的格式很特殊,需要将你的 IP 地址和端口号转换成一个特定的 6 个数字的序列。

假设你的客户端 IP 是 168.1.101,你想使用数据端口 50000port 命令的格式是 h1,h2,h3,h4,p1,p2

  • h1,h2,h3,h4 是 IP 地址的四个十进制数。192,168,1,101
  • p1,p2 是端口号的两个字节。50000 除以 256 得到 195 (商) 和 80 (余数),所以是 195,80

完整的命令是:

port 192,168,1,101,195,80

之后,当你执行 getput 时,FTP 服务器就会尝试连接到你客户端的 50000 端口。


使用 lftp 命令行客户端 (更强大)

lftp 是一个比传统 ftp 命令更现代、功能更强大的客户端,语法更直观。

连接时指定控制端口

lftp -p <控制端口> <服务器IP或域名>

示例:连接到 IP 为 168.1.100,控制端口为 2121 的 FTP 服务器

lftp -p 2121 192.168.1.100

连接后,输入用户名和密码。

连接后设置被动模式端口范围 (高级用法)

lftp 中,你可以设置被动模式下客户端愿意连接的端口范围,这对于通过严格的防火墙策略非常有用。

set ftp:passive-mode on
set ftp:port-allowance-range <起始端口>-<结束端口>

示例:设置被动模式的数据端口只能在 5000051000 之间

lftp 192.168.1.100
lftp user@192.168.1.100:~> set ftp:passive-mode on
lftp user@192.168.1.100:~> set ftp:port-allowance-range 50000-51000
lftp user@192.168.1.100:~> ls

这样,lftp 在请求被动连接时,只会从 5000051000 这个范围内选择一个端口,并告诉服务器。


使用图形化 FTP 客户端 (如 FileZilla)

对于图形界面,操作非常直观。

  1. 新建站点:在 FileZilla 的站点管理器中,创建一个新站点。
  2. 服务器地址:输入服务器 IP 或域名。
  3. 端口:在 "端口" 字段中输入你的控制端口2121)。
  4. 加密:选择 "使用普通 FTP"(不推荐,不安全)或更安全的 "要求显式 FTP over TLS"。
  5. 登录类型:选择正常、匿名或询问。
  6. 用户名和密码:填写你的凭据。

关于数据端口:在图形化客户端中,数据端口通常由客户端在后台自动处理,用户无需关心,FileZilla 默认使用被动模式,并且可以配置被动模式使用的端口范围(在 "编辑" -> "设置" -> "连接" -> "FTP" -> "被动模式" 中)。


总结与最佳实践

客户端类型 指定控制端口 (连接时) 指定/影响数据端口 (连接后) 推荐模式
ftp (传统) ftp -p host:port port h1,h2,h3,h4,p1,p2 (主动模式,不推荐) 被动模式 (使用 -p 选项)
lftp (现代) lftp -p host port set ftp:port-allowance-range <start>-<end> (被动模式) 被动模式 (默认开启)
FileZilla (图形) 在站点管理器的 "端口" 字段输入 在设置中配置被动模式端口范围 被动模式 (默认)

核心要点:

  1. 指定控制端口:在连接命令或图形界面中修改,默认是 21
  2. 指定数据端口
    • 被动模式(推荐)下,端口由服务器分配,客户端无法直接指定,但可以像 lftp 那样设置一个可接受的端口范围。
    • 主动模式(不推荐)下,客户端可以通过 port 命令指定一个端口,但极易被防火墙阻止。
  3. 始终优先使用被动模式 (-ppassive-mode on),因为它对客户端防火墙更友好。
分享:
扫描分享到社交APP
上一篇
下一篇