当前位置: 首页 > news >正文

2023-12-29 服务器开发-centos部署ftp

摘要:

2023-12-29 服务器开发-centos-部署ftp

部署ftp

vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。

前提条件

已创建ECS实例并为实例分配了公网IP地址。

背景信息

FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:

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

· · 被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。

说明大多数FTP客户端都在局域网中,没有独立的公网IP地址,且有防火墙阻拦,主动模式下FTP服务器成功连接到客户端比较困难。因此,如无特殊需求,建议您将FTP服务器配置为被动模式。

FTP支持以下三种认证模式:

· · 匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。

· · 本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。

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

·

本文主要介绍被动模式下,使用本地用户访问FTP服务器的配置方法。关于匿名模式的配置方式、第三方FTP客户端工具使用方式等介绍.

本文示例步骤使用以下资源版本:

· 实例规格:ecs.c6.large

· 操作系统:CentOS 7.2 64位

· vsftpd:3.0.2

当您使用不同软件版本时,可能需要根据实际情况调整命令和参数配置。

步骤一:安装vsftpd

1、远程连接Linux实例。

2、运行以下命令安装vsftpd。

yum install -y vsftpd

出现如下图所示界面时,表示安装成功。

3、运行以下命令设置FTP服务开机自启动。

systemctl enable vsftpd.service

4、运行以下命令启动FTP服务。

systemctl start vsftpd.service

说明:执行该命令时如果提示错误信息Job for vsftpd.service failed because the control process exited with error code,请排查是否存在下述问题。如果问题仍未解决,建议联系专业售后处理

· 网络环境不支持IPv6时,运行命令vim /etc/vsftpd/vsftpd.conf将内容listen_ipv6=YES修改为listen_ipv6=NO。

· MAC地址不匹配时,运行命令ifconfig查看MAC地址,并在/etc/sysconfig/network-scripts/ifcfg-xxx配置文件中新增或修改HWADDR=<MAC地址>。

5、运行以下命令查看FTP服务监听的端口。

netstat -antup | grep ftp

出现如下图所示界面,表示FTP服务已启动,监听的端口号为21。此时,vsftpd默认已开启匿名访问功能,您无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。

步骤二:配置vsftpd

为保证数据安全,本文主要介绍被动模式下,使用本地用户访问FTP服务器的配置方法。

1、运行以下命令为FTP服务创建一个Linux用户。本示例中,该用户名为ftptest

adduser ftptest

2、运行以下命令修改ftptest用户的密码。

passwd ftptest

运行命令后,根据命令行提示完成FTP用户的密码修改。

3、运行以下命令创建一个供FTP服务使用的文件目录。

mkdir /var/ftp/test

4、运行以下命令,创建测试文件。

该测试文件用于FTP客户端访问FTP服务器时使用。

touch /var/ftp/test/testfile.txt

5、运行以下命令更改/var/ftp/test目录的拥有者为ftptest

chown -R ftptest:ftptest /var/ftp/test

6、修改vsftpd.conf配置文件。

1)运行以下命令,打开vsftpd的配置文件。

如果您在安装vsftpd时,使用的是apt install vsftpd安装命令,则配置文件路径为/etc/vsftpd.conf。

vim /etc/vsftpd/vsftpd.conf

2)按i进入编辑模式。

3)配置FTP服务器为被动模式。

具体的配置参数说明如下:

注意:修改和添加配置文件内的信息时,请注意格式问题。例如,添加多余的空格会造成无法重启服务的结果。

#除下面提及的参数,其他参数保持默认值即可。

#修改下列参数的值:

#禁止匿名登录FTP服务器。

anonymous_enable=NO

#允许本地用户登录FTP服务器。

local_enable=YES

#监听IPv4 sockets。

listen=YES

#在行首添加#注释掉以下参数:

#关闭监听IPv6 sockets。

#listen_ipv6=YES

#在配置文件的末尾添加下列参数:

#设置本地用户登录后所在目录。

local_root=/var/ftp/test

#全部用户被限制在主目录。

chroot_local_user=YES

#启用例外用户名单。

chroot_list_enable=YES

#指定例外用户列表文件,列表中用户不被锁定在主目录。chroot_list_file=/etc/vsftpd/chroot_list

#开启被动模式。

pasv_enable=YES

allow_writeable_chroot=YES

#本教程中为Linux实例的公网IP。

pasv_address=<FTP服务器公网IP地址>

#设置被动模式下,建立数据传输可使用的端口范围的最小值。

#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。

pasv_min_port=<port number>

#设置被动模式下,建立数据传输可使用的端口范围的最大值。

pasv_max_port=<port number>

4) 按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。

7、创建chroot_list文件,并在文件中写入例外用户名单。

1)运行以下命令,创建chroot_list文件。

vim /etc/vsftpd/chroot_list

2)按i进入编辑模式。

3)输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。

4)按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。

注意:没有例外用户时,也必须创建chroot_list文件,内容可为空。

8、运行以下命令重启vsftpd服务。

systemctl restart vsftpd.service

步骤三:设置安全组

搭建好FTP站点后,在实例安全组的入方向添加规则并放行下列FTP端口。

说明 大多数客户端位于局域网中,IP地址是经过转换的,因此ipconfigifconfig命令返回的IP不一定是客户端的真实公网IP地址。若后续客户端无法登录FTP服务器,请重新确认其公网IP地址。

被动模式需开放21端口,以及配置文件/etc/vsftpd/vsftpd.conf中参数pasv_min_portpasv_max_port之间的所有端口。配置详情如下表所示。

步骤四:客户端测试

FTP客户端、Windows命令行工具或浏览器均可用来测试FTP服务器。本文以Windows Server 2012 R2 64位系统的本地主机作为FTP客户端,介绍FTP服务器的访问步骤。

1、在本地主机,打开这台电脑

2、在地址栏中输入ftp://<FTP服务器公网IP地址>:FTP端口,本文中为Linux实例的公网IP地址。例如:ftp://121.43.XX.XX:21

3、在弹出的登录身份对话框中,输入已设置的FTP用户名和密码,然后单击登录

登录后,您可以查看到FTP服务器指定目录下的文件,例如:测试文件testfile.txt。

vsftp配置文件及参数说明

/etc/vsftpd目录下文件说明如下:

· /etc/vsftpd/vsftpd.conf是vsftpd的核心配置文件。

· /etc/vsftpd/ftpusers是黑名单文件,此文件中的用户不允许访问FTP服务器。

· /etc/vsftpd/user_list是白名单文件,此文件中的用户允许访问FTP服务器。

配置文件vsftpd.conf参数说明如下:

· 用户登录控制参数说明如下表所示。

· 用户权限控制参数说明如下表所示。

常见问题

· 问题一:本地主机为Windows系统,为什么我无法下载FTP服务器中的文件?

您需要根据以下操作步骤,开启IE浏览器的下载权限。

·

1)在本地主机中打开IE浏览器。

2)在浏览器的右上角单击

图标,然后单击Internet 选项

3)在Internet 选项对话框的顶部,单击安全页签。

4)在选择一个区域以查看或更改安全设置区域,单击Internet,然后在该区域的安全级别区域,单击自定义级别

相关文章:

2023-12-29 服务器开发-centos部署ftp

摘要: 2023-12-29 服务器开发-centos-部署ftp 部署ftp vsftpd&#xff08;very secure FTP daemon&#xff09;是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。 前提条件 已创建ECS实例并为实例分配了公网IP地址。 背景…...

螺旋数字阵(100%用例)C卷 (JavaPythonNode.jsC语言C++)

疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m (0 < n <= 999,0 < m <= 999) ,从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3...n,最终形成一个m行矩阵 小明对这个矩阵有些要求 1.每行数字的个数一样多…...

AUTOSAR从入门到精通-网络通信(UDPNm)(二)

目录 前言 原理 UdpNm工作原理 UdpNm与CanNM的区别联系 网络管理算法...

显示器与按键(LCD 1602 + button)

一、实验目的&#xff1a; &#xff08;1&#xff09;学习lcd 1602的编程与使用、 &#xff08;2&#xff09;机械式复位开关button软件消抖的方法。 二、实验内容&#xff1a; 1、必做&#xff1a;先显示开机画面&#xff0c;&#xff1a;在1602显示器上&#xff0c;分两行…...

2020年认证杯SPSSPRO杯数学建模B题(第一阶段)分布式无线广播全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 B题 分布式无线广播 原题再现&#xff1a; 以广播的方式来进行无线网通信&#xff0c;必须解决发送互相冲突的问题。无线网的许多基础通信协议都使用了令牌的方法来解决这个问题&#xff0c;在同一个时间段内&#xff0c;只有唯一一个拿到令牌…...

【CISSP学习笔记】7. 安全评估与测试

该知识领域涉及如下考点&#xff0c;具体内容分布于如下各个子章节&#xff1a; 设计和验证评估、测试和审计策略进行安全控制测试收集安全过程数据&#xff08;例如&#xff0c;技术和管理&#xff09;分析测试输出并生成报告执行或协助安全审计 7.1. 构建安全评估和测试方案…...

Gateway集成方法以及拦截器和过滤器的使用

前提&#xff1a;请先创建好一个SpringBoot项目 1. 引入依赖 SpringCloud 和 alibabaCloud 、 SpringBoot间对版本有强制要求&#xff0c;我使用的springboot是3.0.2的版本。版本对应关系请看&#xff1a;版本说明 alibaba/spring-cloud-alibaba Wiki GitHub <dependency…...

第G2周:人脸图像生成(DCGAN)

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客\n&#x1f366; 参考文章&#xff1a;365天深度学习训练营\n&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.co…...

【Web】Ctfshow Thinkphp5 非强制路由RCE漏洞

目录 非强制路由RCE漏洞 web579 web604 web605 web606 web607-610 前面审了一些tp3的sql注入,终于到tp5了&#xff0c;要说tp5那最经典的还得是rce 下面介绍非强制路由RCE漏洞 非强制路由RCE漏洞原理 非强制路由相当于开了一个大口子&#xff0c;可以任意调用当前框…...

python3遇到Can‘t connect to HTTPS URL because the SSL module is not available.

远程服务器centos7系统上有minicoda3&#xff0c;觉得太占空间&#xff0c;就把整个文件夹删了&#xff0c;原先的Python3也没了&#xff0c;都要重装。 我自己的步骤&#xff1a;进入管理员模式 1.下载Python3的源码&#xff1a; wget https://www.python.org/ftp/python/3.1…...

QSPI Flash xip取指同时program过程中概率性出现usb播歌时断音

项目场景&#xff1a; USB Audio芯片&#xff0c;代码放到qspi flash中&#xff0c;执行代码时&#xff0c;客户会偶尔保存一些参数&#xff0c;即FPGA验证过程中&#xff0c;每隔10ms向flash info区烧写4个byte&#xff08;取指过程一直存在&#xff0c;且时隙软件不可控&…...

MySQL聚簇索引和非聚簇索引的区别

前言: 聚簇索引和非聚簇索引是数据库中的两种索引类型&#xff0c;他们在组织和存储数据时有不同的方式。 聚簇索引&#xff1a; 简单理解&#xff0c;就是将数据和索引放在了一起&#xff0c;找到了索引也就找到了数据。对于聚簇索引来说&#xff0c;他的非叶子节点上存储的是…...

【C#】蜗牛爬井问题C#控制台实现

文章目录 一、问题描述二、C#控制台代码 一、问题描述 井深30米&#xff0c;蜗牛在井底&#xff0c;每天爬3米又滑下1米&#xff0c;问第几天爬出来 二、C#控制台代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System…...

IP地址的四大类型:动态IP、固定IP、实体IP、虚拟IP的区别与应用

在网络通信中&#xff0c;IP地址是设备在互联网上唯一标识的关键元素。动态IP、固定IP、实体IP和虚拟IP是四种不同类型的IP地址&#xff0c;它们各自具有独特的特点和应用场景。 1. 动态IP地址&#xff1a; 动态IP地址是由Internet Service Provider&#xff08;ISP&#xff…...

Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式

一、ImageMagick简介 ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换&#xff0c;可以处理超过100种图像格式&#xff0c;包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。对图片的操作&#xff0c;即可以通过命令行进行&am…...

JavaScript二

目录 流程控制 if判断 while循环 do while for循环 forEach for in Map与set iterator 流程控制 if判断 <script>use strictvar age 5;if(age < 3){alert("haha");}else if(age < 5){alert("hi world");}else{alert("hello wor…...

JavaScript系列——正则表达式

文章目录 需求场景正则表达式的定义创建正则表达式通过 / 表示式/ 创建通过构造函数创建 编写一个正则表达式的模式使用简单模式使用特殊字符常用特殊字符列表特殊字符组和范围 正则表达式使用代码演示 常用示例验证手机号码合法性 小结 需求场景 在前端开发领域&#xff0c;在…...

命令行创建Vue项目

Vue项目创建 1. 打开UI界面 在命令行中&#xff0c;执行如下指令&#xff1a; vue ui 2. 打开项目管理器 3. 创建项目 创建项目的过程&#xff0c;需要联网进行&#xff0c;这可能会耗时比较长的时间&#xff0c;请耐心等待。 windows的命令行&#xff0c;容易卡顿&#xff0c…...

01.PostgreSQL基本SELECT语句

1. SQL简介 SQL 是用于访问和处理数据库的标准的计算机语言。 SQL有两个标准:分别是SQL92和SQL99,他们分别代表了92年和99年颁布的SQL标准,我们今天使用的SQL语言依然遵循这些标准。 注意:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展! 2. SQL分…...

UDP信号多个电脑的信息传输测试、配置指南

最近要做一个东西&#xff0c;关于一个软件上得到的信号&#xff0c;如何通过连接的局域网&#xff0c;将数据传输出去。我没做过相关的东西&#xff0c;但是我想应该和软件连接数据库的过程大致是差不多的&#xff0c;就一个ip和一个端口号啥的。 一.问题思路 多个设备同时连…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...