深入探究Linux FTP被动模式的使用方法 (linux ftp 被动模式)

FTP (File Transfer Protocol)是网络上最常用的文件传输协议之一,由于其简单易用、传输速度快等特点,被广泛应用于各权领域中。

Linux系统作为一款开源的操作系统,本身就支持FTP协议,特别是FTP被动模式,更是在文件传输过程中起到重要作用。本文将,为读者提供参考和帮助。

一、FTP被动模式的概述

FTP协议本质上是一种客户端/服务器模型,其中客户端通过FTP命令向FTP服务器发出请求,并通过FTP服务器传输文件。FTP分为主动模式和被动模式,其中被动模式是目前广泛应用的一种方式。

在FTP被动模式下,客户端连接到服务器的21端口,向服务器发送PASV命令请求被动模式数据连接。服务器随机分配一个端口,并通过21端口将端口号返回给客户端。客户端接收到服务器返回的端口号之后,向服务器分配的端口号建立数据连接,并通过该端口传输文件。

二、FTP被动模式的优点

FTP被动模式更大的优点在于穿透NAT设备,使内网的FTP服务器能够被公网访问。具体而言,FTP主动模式需要服务器向客户端建立数据连接,而NAT设备无法识别这一数据连接。因此,FTP主动模式在NAT环境下无法正常工作。FTP被动模式通过随机端口建立被动模式数据连接,可以很好地穿透NAT设备,解决FTP主动模式在NAT环境下的不足。

三、Linux FTP服务器端被动模式的配置

使用Linux FTP服务器,需要首先安装FTP软件。推荐使用vsftpd,它是一个成熟、稳定的FTP服务器软件。安装方法可以通过软件包管理器或源代码编译方式安装。

针对FTP服务器使用被动模式,需要在FTP服务器的配置文件中修改PASV模块的参数。通过修改vsftpd配置文件(/etc/vsftpd.conf),可以在参数中增加以下内容:

pasv_enable=YES

pasv_min_port=2023

pasv_max_port=2100

在以上参数设置中,pasv_enable=YES表示开启vsftpd服务器的PASV模式;pasv_min_port=2023和pasv_max_port=2100用于指定被动模式数据连接的端口范围。

通过以上配置后,就可以启动vsftpd服务器,并使用FTP客户端连接FTP服务器,实现被动模式下的文件传输。

四、Linux FTP客户端被动模式的配置

同样,Linux FTP客户端在使用被动模式传输文件时,需要修改FTP客户端的配置文件。在大多数Linux操作系统中,FTP客户端直接使用系统自带的命令行工具,如ftp。因此,在连接FTP服务器时,需要输入以下命令行:

ftp -p IP地址

其中,-p代表FTP客户端使用被动模式连接FTP服务器。

如果使用GUI的FTP客户端,如FileZilla等,可以在连接FTP服务器时选择使用被动模式进行连接。在FileZilla的连接设置中,可以设置FTP客户端使用以下端口进行被动模式数据连接:

到此,我们已经深入探究了Linux FTP被动模式的使用方法。FTP被动模式作为FTP协议中最为广泛使用的模式之一,对于内网FTP服务器的访问、穿透NAT设备等场景,都起到了非常重要的作用。相信本文内容能够给读者带来帮助,让大家更好地了解和掌握Linux FTP被动模式的使用方法。

相关问题拓展阅读:

如何使用ftp连接linux虚拟机

下面是在虚拟机中的linux的ftp的基本配置(redhat AS 4.0为例):

首先要安装linux下的vsftp软件包。

rpm -qa|gerp vsftpd //查找vsftpd有没有安装

如果没有安装就 vsftpd-2.0.1-5.i386.rpm (在之一张光盘)

在linux中有一个非常重要的一点就是要挂载光驱 mount /media/cdrom

在这里我们就不用源代码安装了。用的是rpm安装

#rpm -ivh vsftpd-2.0.1-5.i386.rpm

这里就安装好了。

service vsftpd start 启动vsftpd服务

如果在不设置任何的情况下,可以以匿名的方式访问该ftp。

注.如果访问不了的时候请大家要把linux的防火墙也要关闭:

iptables -F 清除防火墙

在安装好ftp会产生几个文件:

/etc/vsftpd/vsftpd.conf 主配置文件

/etc/vsftpd.ftpusers 指定哪些用户不能访问FTP服务器

/etc/vsftpd.user_list 文件中指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。

这几个文件就是整个ftp控制和禁止用户的权限配置。。。

下面我们就来设置一个vsftpd的核心文件

# cd /etc/vsftpd/vsftpd.conf 这就是vsftpd的核心配置文件

anonymous_enable=YES/no 是否允许匿名用户登录

anonymous_enable=yes/no 是否允许匿名上春链慎传文件

local_enable= YES/no 是否允许本地用户登录

write_enable= YES/no 是否允许本地用户上传

guest_enable=yes/no 是否允许虚拟用户登录;

local_mask=022 设置本地用户的文件生成掩码为022,默认值为077

dirmessage_enable= YES 设置切换到目录时显示.message隐含文件的内容

xferlog_enable= YES 激活上传和下载日志

connect_from_port_20=YES 启用FTP数据端口连接

pam_service_name=vsftpd 设置PAM认证服务的配置文件名称, 该文件存放在/etc/pam.d目录下

userlist_enable= YES 允许vsftpd.user_list文件中的用户访问服务器

userlist_deny= YES 拒绝vsftpd.user_list文件中的用户访问服务器

listen= YES/no 是否使用独占启动方式(这一项比较重要)

tcp_wrappers= YES/no 是否使用tcp_wrappers作为主机访问控制方式

最主要的就是这些设置了。(这是一般都是默认的不是太懂的不要动)

大家可以设置下面的设置:

ftpd_banner=welcome to ftp service 设置连接服务器后的欢迎信息

idle_session_timeout=60 限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)

data_connection_timeout=120 设置客户机在进行数据传输时,设置空闲的数据中断时间

accept_timeout=60 设置在多长时间后自动建立连接

connect_timeout=60 设置数据连接的更大激活时间,多长时间断开,为别人所使用;

max_clients=200 指明服务器总的客户并发连接数为200

max_per_ip=3 指明每个客户机的更大连接数为3

local_max_rate=50000(50kbytes/sec)

anon_max_rate=30000 设置本地用户和匿名用户的更大传输速率限制

pasv_min_port=端口

pasv-max-prot=端口号 定义更大与最小端口,为0表示任意端口;为客户端连接指明端口;

listen_address=IP地址 设置ftp服务来监听的地址扒敬,客户端可以用哪个地址来连接;

listen_port=端口号 设置FTP工作的端口号,默认的为21

chroot_local_user=YES 设置所有的本地用户可以chroot

chroot_local_user=NO 设置指定用户能唤顷够chroot

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list(只有/etc/vsftpd.chroot_list中的指定的用户才能执行)

local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录;

chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user,不能利用cd命令向上转;只能向下;

chroot_list_enable=yes/no 锁定指定文件中用户的主目录(部分),文件:/chroot_list_file=path 中指定;

userlist_enable=YES/NO 是否加载用户列表文件;

userlist_deny=YES 表示上面所加载的用户是否允许拒绝登录;

userlist_file=/etc/vsftpd.user_list 列表文件

这些就是高级设置了。大家可以适当的更改。

#vi /etc/hosts.allow

vsftpd:192.168.5.128:DENY 设置该IP地址不可以访问ftp服务(vsftpd在独占启动方式下支持tcp_wrappers主机访问控制方式)

时间限制:

#cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd

#vi /etc/xinetd.d/vsftpd/

修改 disable = no

access_time = hour:min-hour:min (添加配置访问的时间限制(注:与vsftpd.conf中listen=NO相对应)

例: access_time = 8:30-11:30 17:30-21:30 表示只有这两个时间段可以访问ftp

配置文件是 /etc/vsftpd/vsftpd.conf 按如下编辑此文件,编辑文件当然用vi了

1)实现匿名用户的上传下载文件

程序代码:

Anonymous_enable=yes 匿名登陆

Connect_form_port_20=yes 启用FTP数据端口的数据连接

Pam_service_name=vsftpd 验证方式

Listen=yes 独立的VSFTPD服务器

这样你就可以实现匿名登陆ftp了,但还不能上传文件

程序代码:

Anon_upload_enable=yes 开放上传权限

Anon_mkdir_write_enable=yes 可创建目录的同时可以在此目录中上传文件

Write_enable=yes 开放本地用户写的权限

Anon_other_write_enable=yes 匿名帐号可以有删除的权限

加上上面的这段,你就可以实现匿名ftp的上传下载文件了

然后你保存文件,用service vsftpd start来启动vsftp的服务,然后就可以用ftp了

注意:确定你的防火墙 iptables上打开21端口,不然在登陆ftp的时候会提示socket错误,拒绝连接。还有就是当你再次编辑vsftp.conf后用 service vsftpd restart重起的时候总是提示你不能关闭vsftp服务,这时候你用service vsftpd status察看一下他的状态,如果提示你vsftpd被locked 那可能是因为你的vsftpd.conf中配置的有错误,你要重新编辑他,直到能正常重起他为止,一次配置不对,多配置几次就好了

2)实现本地用户上传下载

程序代码:

新建一个用户

adduser 用户名 增加一个用户

passwd 用户名 增加用户的密码

然后看/etc/passwd中最后一行就是你刚才添加的用户信息

然后编辑/etc/vsftpd/vsftpd.conf文件,

Local_enable=yes 允许使用本地用户来登陆ftp

在/etc/vsftpd.ftpuser中可以增加想要阻止登陆ftp的用户

限制用户只能在自己的目录中

Chroot_list_enable=yes 文件中的名单可以调用

Chroot_list_file=/etc/vsftpd.chroot_list 前提是chroot_local_user=no,在文件中加入用户名

vsftpd.conf的参数

程序代码:

Anonymous_enable=yes 允许匿名登陆

Dirmessage_enable=yes 切换目录时,显示目录下.message的内容

Local_umask=022 FTP上本地的文件权限,默认是077

Connect_form_port_20=yes 启用FTP数据端口的数据连接

Xferlog_enable=yes 激活上传和下传的日志

Xferlog_std_format=yes 使用标准的日志格式

Ftpd_banner=XXXXX 显示欢迎信息

Pam_service_name=vsftpd 验证方式

Listen=yes 独立的VSFTPD服务器

Anon_upload_enable=yes 匿名用户上传权限

Anon_mkdir_write_enable=yes 创建目录的同时可以在此目录中上传文件

Write_enable=yes 本地用户写的权限

Anon_other_write_enable=yes 匿名帐号可以有删除的权限

Anon_world_readable_only=no 匿名用户浏览权限

Ascii_upload_enable=yes 启用上传的ASCII传输方式

Ascii_download_enable=yes 启用下载的ASCII传输方式

Banner_file=/var/vsftpd_banner_file 用户连接后欢迎信息使用的是此文件中的相关信息

Idle_session_timeout=600(秒) 用户会话空闲后10分钟

Data_connection_timeout=120(秒) 将数据连接空闲2分钟断

Accept_timeout=60(秒) 将客户端空闲1分钟后断

Connect_timeout=60(秒) 中断1分钟后又重新连接

Local_max_rate=50000(bite) 本地用户传输率50K

Anon_max_rate=30000(bite) 匿名用户传输率30K

Pasv_min_port=5000 将客户端的数据连接端口改在

Pasv_max_port=—6000之间

Max_clients=200 FTP的更大连接数

Max_per_ip=4 每IP的更大连接数

Listen_port=5555 从5555端口进行数据连接

Local_enble=yes 本地帐户能够登陆

Write_enable=no 本地帐户登陆后无权删除和修改文件

Chroot_local_user=yes 本地所有帐户都只能在自家目录

Chroot_list_enable=yes 文件中的名单可以调用

Chroot_list_file=/etc/vsftpd.chroot_list 前提是chroot_local_user=no

Userlist_enable=yes 在指定的文件中的用户不可以访问

Userlist_deny=yes

Userlist_file=/etc/vsftpd.user_list

Banner_fail=/路径/文件名 连接失败时显示文件中的内容

Ls_recurse_enable=no

Async_abor_enable=yes

one_process_model=yes

Listen_address=10.2.2.2 将虚拟服务绑定到某端口

Guest_enable=yes 虚拟用户可以登陆

Guest_username=所设的用户名 将虚拟用户映射为本地用户

Chown_uploads=yes 改变上传文件的所有者为root

Chown_username=root

Deny_email_enable=yes 是否允许禁止匿名用户使用某些邮件地址

Banned_email_file=//任意指定的路径/xx/

Pasv_enable=yes 服务器端用被动模式

User_config_dir=/任意指定的路径//任意文件目录指定虚拟用户存放配置文件的路径

关于linux ftp 被动模式的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 深入探究Linux FTP被动模式的使用方法 (linux ftp 被动模式)