1. 首页 > 快讯

Linux 下 部署 FTP 服务器

大家好,感谢邀请,今天来为大家分享一下Linux 下 部署 FTP 服务器的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

[[424234]]

FTP是文件传输协议的缩写,它通过网络在服务器和客户端之间传输文件。它现已成为广泛使用的标准工具。

vsftpd 是very secure ftp daemon 的缩写。它是Linux 上最流行、使用最广泛的FTP 服务器之一。具有安全、速度快、稳定的特点。许多重要的FTP站点如ftp.gnu.org、ftp.freebsd.org都使用vsftpd作为服务器

目前,FTP服务在日常工作中使用较多。每个服务器版本更新都需要先打包,然后上传到在线FTP服务器,然后将服务器包从FTP服务器下载到在线机器上进行MD5校准。验证后即可更新在线服务器

说明

在安装vsftpd之前,有几个重要的点需要解释一下。

工作模式

服务器使用两个端口与客户端通信。一是命令端口,也称为控制端口。默认为21,用于命令传输。另一个是数据端口,默认是20,用于数据传输。

主动模式客户端向FTP服务器发送端口信息,服务器主动连接该端口。

进程: 客户端与FTP 服务器的命令端口(21)建立TCP 连接。当需要传输数据时,客户端启动一个新的端口进行数据传输,并使用PORT命令告诉服务器命令端口连接上的端口号。服务器与该端口建立TCP连接。连接成功后,客户端开始传输数据。

被动模式FTP服务器打开并向客户端发送端口信息。客户端连接到该端口,服务器被动接受连接。

流程:客户端与FTP服务器的命令端口(21)建立TCP连接。当需要传输数据时,服务器监听一个用于数据传输的端口,并在命令端口连接上使用PASV命令告诉客户端端口号。客户端与该端口建立TCP连接。连接成功后,客户端开始传输数据。

建议:

1、大多数FTP客户端都在局域网内,没有独立的公网IP地址,并且被防火墙拦截。 FTP服务器在主动模式下很难成功连接到客户端。因此,除非有特殊要求,FTP服务器均配置为被动模式。本文后面的FTP服务器配置也以被动模式为例。

2、被动模式下,命令端口和数据端口均在FTP服务器上开放,可以通过启动配置进行修改。由于默认端口是公共的,安全性较低,因此在实际安装过程中会修改默认端口。

用户认证模式

匿名用户模式允许任何人直接登录FTP 服务器而无需密码验证。这种模式安全性最低,一般只用于保存不重要的公共文件。不建议在生产环境中使用。

本地用户模式通过Linux系统本地帐户进行身份验证,比匿名用户模式更安全。

虚拟用户模式FTP 服务器的专用用户。虚拟用户只能访问Linux系统提供的FTP服务,而无法访问Linux系统的其他资源,进一步增强了FTP服务器的安全性。

匿名用户模式一般用于不重要的公共文件,仅提供下载服务。也就是说用户只能下载,不能进行其他操作。通过配置锁定目录、修改命令端口和数据端口,可以进一步增强本地用户模式。安全性,本文后面的配置均以该模式为例

安装

安装前可以使用以下命令检查是否已经安装

如果没有安装vsftpd-v,会出现如下提示:

[root@localhost~]$vsftpd-v-bash:vsftpd: 找不到安装vsftpd 的命令

yuminstallvsftpd安装完成后,执行vsftpd -v命令。如果输出版本号,则说明安装成功。

[root@localhost~]#vsftpd-vvsftpd:version3.0.2

配置服务器

安装完成后,默认配置位于/etc/vsftpd/vsftpd.conf。如果找不到默认配置在哪里,可以使用以下命令来查找,其中/etc/vsftpd 目录是存储配置的位置。

[root@localhost~]#whereisvsftpdvsftpd: /usr/sbin/vsftpd/etc/vsftpd/usr/share/man/man8/vsftpd.8.gz 配置格式比较简单。每一行都是一个注释或选项。注释以# 开头,选项格式为option=value。每个选项占一行。选项、=和值之间不允许有空格。

vsftpd 为每个配置选项设置默认值。服务器启动后,vsftpd.conf 中配置的选项将覆盖服务器中的默认值。

vsftpd 有许多可配置选项。常用的配置项按类别分为几组:访问权限、锁定访问目录、限制用户登录、修改端口、日志配置等配置。每个配置项前都添加了详细的说明。

对配置项进行分组的目的主要是为了总结和解释每组配置项的作用。实际配置过程中,只需将所有组的配置项添加到vsftp.conf中即可

访问权限#是否允许匿名登录,默认允许,如果允许,则用户名ftp和anonymous将被视为匿名登录#为了安全,一般不允许匿名登录匿名_enable=NO #是否允许匿名上传,默认不允许,如果允许write_enable选项需要设置为YES#为了安全,一般不允许anon_upload_enable=NO#是否允许本地用户登录,默认不允许,如果允许则`中的用户``/etc/passwd``可以登录FTP服务器#如果不允许匿名登录,则需要将该选项设置为允许local_enable=YES#是否允许在FTP服务器上写入。默认情况下是不允许的。如果有上传文件、删除文件等需求,通常会开启write_enable=YES#设置进入服务器文件的写入权限掩码值。如果值是八进制,则需要从0开始,否则将被视为十进制。 #值为022,可以满足大多数FTP的需要。 local_umask=022 锁定访问目录#默认为NO,如果设置为YES,表示用户通过FTP客户端登录后#只能在FTP服务器指定的目录中,并且不允许剪切该目录, chroot_local_user=YES # 将用户名插入本地FTP主目录user_sub_token=$USER # 定义用户FTP主目录,用户成功登录后,vsftpd服务器会切换到该目录。 #此时FTP客户端就会位于该目录下。后续的上传和下载都是针对该目录的local_root=/home/$USER/ftp来锁定登录用户。在指定的目录中,阻止用户访问不应该访问的目录。这里我们设置为只允许访问自己家目录下的ftp目录。例如:新增一个用户testuser,专门用于上传和下载。 testuser通过FTP客户端成功登录后,会自动切换到/home/testuser/ftp目录,不允许切换出该目录。

注意:用户上传和下载的目录有限,因此锁定目录一般设置为剩余空间较大的磁盘。

限制用户登录#如果设置为YES,vsftpd将从userlist_file选项指定的文件中读取用户列表userlist_enable=YES #设置用户列表配置文件。如果/etc/vsftpd/user_list不存在,需要手动创建userlist_file=/etc/vsftpd /user_list #该选项检查userlist_enable选项,当userlist_enable为YES时#如果userlist_deny设置为NO,则表示只有用户userlist_file中的用户允许登录#如果userlist_deny设置为YES,则表示禁止userlist_file中的用户登录,允许其他用户登录userlist_deny=NO 修改端口#如果启用,vsftpd将以独立模式运行,vsftpd本身将负责监听和处理传入的连接listen=NO#与listen选择类似,但该选项监听IPV6上的套接字#而不是listen是IPV4。该选项和listen是互斥的,不能同时设置为YES。 Listen_ipv6=YES #服务器监听端口也是命令端口。默认为21,修改后防火墙需要做相应调整。 #同时FTP客户端登录需要指定端口号#为了增强安全性,配置时通常修改listen_port=48888 #启用被动模式pasv_enable=YES #被动模式下,服务器的地址默认为内网地址#如果部署在云服务器上,需要修改为公网IPpasv_address=192.168.70.20#设置被动模式下可用于数据传输的端口范围最小值。 #建议将端口范围设置在比较高的范围内,如50000~50010,这样有利于提高访问FTP服务器的安全性pasv_min_port=50000 #设置可用于数据的端口范围最大值被动模式传输pasv_max_port=50010 日志配置#是否记录上传和下载日志,默认不记录,如果设置为记录#默认日志文件位于/var/log/vsftpd.log,如果vsftpd_log_file选项配置后,会覆盖默认日志文件xferlog_enable=YES #记录上传下载日志xferlog_file=/var/log/xferlog#是否以标准格式记录日志xferlog_std_format=YES其他配置#vsftpd使用的PAM服务名称pam_service_name=vsftpd#tcp_wrappers=YES 这两个配置可以使用默认生成的选项。无需进行任何修改

设置防火墙

如果部署FTP 服务器的计算机上的防火墙已关闭,则可以跳过此步骤。或者如果不想设置防火墙,可以通过systemctl stopfirewalld命令关闭防火墙,可以忽略这一步。

上述配置中,服务器监听端口(也称为命令端口)listen_port选项设置为48888,数据端口范围为50000-50010,因此防火墙需要开放这些端口。执行以下命令进行设置

[root@localhost~]#firewall-cmd--zone=public--add-port=48888/tcp--permanentsuccess[root@localhost~]#firewall-cmd--zone=public--add-port=50000- 50010/tcp--permanentsuccess 防火墙搭建完成后,执行以下命令重启防火墙服务

[root@localhost~]#systemctlrestartfirewalld最后检查端口是否打开成功

[root@localhost~]#firewall-cmd--list-port50000-50010/tcp48888/tcp 从结果可以看出,防火墙开放了48888和50000-50099端口

启动服务器

配置/etc/vsftpd/vsftpd.conf并设置防火墙后,执行以下命令启动服务器

systemctl 启动vsftpd

启动后,查询服务器状态,确认服务器是否启动成功。

[root@localhost~]#systemctlstatusvsftpdvsftpd.service-VsftpdftpdaemonLoaded:loaded(/usr/lib/systemd/system/vsftpd.service;enabled;vendorpreset:disabled)Active:active(running)sinceFri2021-09-120:21:00CST ;3日前MainPID:94916(vsftpd)CGroup:/system. slice/vsftpd.service94916/usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf Vsftpdftpdaemon。将服务器设置为开机启动

systemctlenablevsftpd的以下命令可以确认服务器的命令端口是否开放(配置为: 48888)

[root@localhost~]#netstat-antup|grepvsftpdtcp600:48888:*LISTEN20501/vsftpd[root@localhost~]#

新建FTP用户

创建新用户mytest并设置密码

[root@localhost~]#useraddmytest[root@localhost~]#passwdmytest新建FTP目录并修改目录权限

[root@cghost21home]#mkdir -p /home/mytest/ftp/files[root@cghost21home]#chmod-R500/home/mytest/[root@cghost21home]#chmod-R700/home/mytest/ftp/files注:/home/mytest/ftp 是mytest 用户的锁定目录。 mytest登录后只能停留在该目录及其子目录中,不允许切换到其他目录。

'/home/mytest/ftp/files'目录是实际的上传和下载目录,因此需要具有读、写和可执行权限

最后需要将该用户名添加到允许登录FTP服务器的用户列表中,即/etc/vsftpd/vsftpd.conf中userlist_file选项对应的文件/etc/vsftpd/user_list中。如果user_list不存在,则需要手动创建。并将mytest 添加到其中

测试

服务器全部设置完毕后,需要进行测试。我这里准备的FTP服务器的IP是192.168.70.20,FTP客户端机器的IP是192.168.70.11。

进入FTP服务器的/home/mytest/ftp/files目录,新建a.txt测试文件

[root@localhostfiles]#pwd/home/mytest/ftp/files[root@localhostfiles]#echo'ftpserver.'a.txt[root@localhostfiles]#进入FTP客户端的/home/wl/temp目录machine ,创建一个新的test.txt 测试文件

[root@localhosttemp]#echo'ftptest.'test.txt[root@localhosttemp]#cattest.txtftptest. 要测试上传和下载,需要在FTP 客户端机器上安装FTP 客户端。执行以下命令安装即可,如已安装,可以忽略

yuminstallftp执行以下一系列命令进行测试

1、登录FTP服务器命令,格式:ftp服务器ID命令端口2、输入登录用户名3、输入登录密码4、登录成功后,会在FTP服务器的/home/mytest/ftp目录下FTP 服务器。执行ls命令后,结果显示当前目录还有files子目录。 5、执行pwd命令查看当前目录。 FTP服务器上的/home/mytest/ftp目录是FTP的根目录。 6. 执行cdfiles命令进入files目录,即FTP。服务器上的/home/mytest/ftp/files 目录,然后执行ls 命令查看当前目录下的文件。可以在FTP服务器上看到测试文件a.txt7。执行puttest.txt 命令将当前目录放到FTP 客户端计算机上。 (/home/wl/temp)上传服务器的/home/mytest/ftp/files目录下的test.txt文件8、执行geta.txt命令获取FTP服务器上的/home/mytest/ftp/files/将a.txt文件下载到FTP客户端计算机的当前目录(/home/wl/temp)。 9、上传下载测试完成后,执行exit命令退出FTP命令行。 10、最后执行cata.txt命令查看FTP服务器上的数据。从结果中我们可以看到,下载的测试文件内容与服务器

小结

上的测试文件内容相同。本文介绍Linux下FTP服务器vsftpd的安装、配置、测试等步骤以及注意事项。文章仅对vsftpd的常用配置项进行说明。更多配置项请参考官网文档。

Linux 下 部署 FTP 服务器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、Linux 下 部署 FTP 服务器的信息别忘了在本站进行查找哦。

用户评论

无望的后半生

最近想学习一下服务器方面的知识,这次就从部署ftp服务器开始尝试。

    有13位网友表示赞同!

执念,爱

我听说Linux系统部署ftp服务器比较简单,对新手友好?

    有6位网友表示赞同!

孤者何惧

准备把一些文件共享给朋友们用,想问问这个教程适合我的需求吗?

    有6位网友表示赞同!

念初

现在用的Win系统很麻烦传输大型文件,换成Linux试试FTP能更快?

    有16位网友表示赞同!

醉婉笙歌

之前只听说过ftp,没亲自操作过,这篇教程感觉很详细啊!

    有17位网友表示赞同!

醉红颜

看起来部署步骤还是很清晰的,我还是有些电脑小白,看看是不是可以学会。

    有9位网友表示赞同!

毒舌妖后

我需要将我的静态网站文件上传到服务器,FTP会不会比较简单?

    有10位网友表示赞同!

空巷

想找一份关于FTP服务器部署的文档,这个教程挺不错的选择。

    有7位网友表示赞同!

良人凉人

学习Linux操作的同时也能学习一下ftp的用法,一举两得!

    有17位网友表示赞同!

拥抱

这个教程用到的命令我都了解吗? 我要确认一下。

    有20位网友表示赞同!

面瘫脸

有没有什么FTP服务的替代方案,比如WebDav之类的?

    有19位网友表示赞同!

爱你的小笨蛋

部署完成后还需要做一些安全设置吗,例如设置用户密码?

    有17位网友表示赞同!

艺菲

我想把我的下载的文件整理到ftp服务器上方便分享,这个教程合适吗?

    有5位网友表示赞同!

花开丶若相惜

使用FTP共享文件有什么潜在的安全风险吗?

    有12位网友表示赞同!

太易動情也是罪名

在Linux系统中部署FTP服务器还有哪些需要注意的地方吗?

    有12位网友表示赞同!

妄灸

如果有图文并茂的教程更好理解,对新手更加友好一点。

    有5位网友表示赞同!

落花忆梦

这个教程是适用于所有版本的Linux的吗?哪个版本最好用呢?

    有15位网友表示赞同!

猫腻

部署完ftp服务器之后如何进行文件上传和下载操作?

    有13位网友表示赞同!

汐颜兮梦ヘ

FTP服务器能不能用来同步文件夹内容?

    有12位网友表示赞同!

冷月花魂

如果我有多个网站,可以部署多个ftp服务器吗?

    有14位网友表示赞同!

一个人的荒凉

想了解更多关于Linux系统的知识,这篇文章是不错的起点。

    有6位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7662.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666