阿里云搭建ftp服务器

前言

物联网产品里面有一些访问远程文件的需求,比如说远程获取升级固件,下载到本地,然后升级固件。刚好手里有一个阿里云服务器,那么在上面搭建一个ftp服务器,就能满足这个需求,下面是如何在阿里云搭建这个ftp服务器的详细过程以及遇到的一些问题。

过程

1.服务器的配置

要访问服务器,需要先搭建一个SSH远程连接,如果你已经搭好了请跳过。

默认你的服务器已经创建了实例,如果还没有请参考:创建实例_云服务器 ECS(ECS)-阿里云帮助中心 (aliyun.com)

如果是新建的实例,请重置实例密码。

然后是配置安全组规则,确认是否已有22端口,默认是有的。

然后是ftp的端口,手动添加21端口。如需上传权限还要增加20端口。

别忘了这个步骤,否则是无法访问ftp的。

2.SSH远程配置

选择任意一个支持SSH的终端软件,这里用的是MobaXterm,MobaXterm免费Xserver和适用于Windows的选项卡式SSH客户端 (mobatek.net)

新建一个SSH终端,输入服务器IP,端口号是22.

然后输入自己的用户名和密码登录服务器。

登录上服务器后,就开始配置啦!

安装 vsftpd

yum install -y vsftpd

安装完成后,配置vsftpd.conf文件:

vi /etc/vsftpd/vsftpd.conf

常用配置
#允许匿名用户登录FTP
anonymous_enable=YES
#设置匿名用户的登录目录(如需要,需自己添加并修改)
anon_root=/var/ftp/pub
#打开匿名用户的上传权限
anon_upload_enable=YES
#打开匿名用户创建目录的权限
anon_mkdir_write_enable=YES
#打开匿名用户删除和重命名的权限(如需要,需自己添加)
anon_other_write_enable=YES
#匿名用户的掩码(如需要,需自己添加,含义:如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644)
anon_umask=022
启动服务及一些常用命令

1、启动Vsftpd服务其命令为:

service vsftpd start 或 /etc/init.d/vsftpd start

2、停止Vsftpd服务的命令为:

service vsftpd stop 或 /etc/init.d/vsftpd stop

3、重新启动Vsftpd服务的命令为:

service vsftpd restart 或 /etc/init.d/vsftpd restart 或 systemctl restart vsftpd.service

4、检查Vsftpd服务的运行状态:

service vsftpd status

5、ftp端口查看

netstat -antup | grep ftp

开机自启动

systemctl enable vsftpd.service

启动服务

systemctl start vsftpd.service

 active表示服务已开启。

创建用户

a.运行以下命令创建 ftptest 用户。

useradd ftptest

(删除用户命令:sudo userdel -r newuser)

b.运行以下命令修改 ftptest 用户密码。

passwd ftptest

SSH配置到此,接下来就是登录验证一下是否能访问ftp了。

3.windows登录ftp

打开任意文件夹,输入路径:ftp://公网IP,可能会出现以下错误。

如果出现该问题,我们只需要打开IE浏览器>>Internet选项>>高级>>将“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”选项去掉>>确定即可:

再次输入账户密码登录,应该就没问题了。

好了,以上是基本过程,那么问题来了。

4.问题

防火墙问题

如果防火墙是开启的,没有开放FTP的情况下,会访问受限。

一种方法是直接关闭防火墙,另一种方法是将FTP服务加入防火墙白名单。

方法一

查看防火墙状态

systemctl status firewalld

关闭防火墙

systemctl stop firewalld 

永久关闭防火墙

systemctl disable firewalld

方法二

暂时开放 ftp 服务 

firewall-cmd --add-service=ftp

永久开放 ftp 服务

firewall-cmd --add-service=ftp --permanent

重启防火墙让设定生效

systemctl restart firewalld

查看是否加入成功

firewall-cmd --list-all-zone | grep ftp

权限问题

如果没有开放ftp文件权限,也可能访问受限。

递归设置权限

chmod -R 777 /var/ftp 

当使用客户端下载ftp数据时,可能又会遇到这些问题:
数据类型问题

1.如果客户端选择的是ASCII传输数据类型,/etc/vsftpd.conf这两行注释掉或者设为NO,否则下载数据有错。

#ascii_upload_enable=NO

#ascii_download_enable=NO

2.如果客户端监听数据连接方式选择的是被动模式,未正确分配服务器端口会无法下载文件。

关于主动模式(port)与被动模式(passive):

port模式:客户端连接服务端,说:哥,你过会往我2000端口发数据啊

passive模式:客户端连接服务端,然后服务端说,弟啊,过会来我2000端口取数据。

一般情况下我们的ftp服务器都是用passive模式的,为啥呢?比如客户端ip是192.168.2.3,但是访问ftp服务器的时候比如ftp.baidu.com的时候,是用公网ip去了,比如220.12.12.32,结果你说往我2000端口发,服务端基本是不知道怎么发的,所以一般都是服务器告诉你,过会来2000端口来取数据。

主动模式

客户端通过端口N连接到服务器的21端口,并告诉服务端,我开启了一个N+1端口(实际可能不是N+1,但会和N比较接近)用来传输数据,然后服务端通过20端口,主动连接客户端的N+1端口,进行数据传输,该模式为FTP的默认模式

被动模式

客户端通过端口N连接到服务器的21端口,并告诉服务端,我采用的是被动模式,请提供一个端口给我用来传输数据,然后服务器告诉客户端:“OK,我给你分配的端口是M,可以开始传输数据”。然后客户端通过N+1(同上,可能不是但比较接近)端口主动连接服务器的M端口,进行数据传输。

所以,设定为被动模式时,服务器会被客户端分配传输数据的端口,如果服务器上没有开放对应的出入规则,就有可能无法下载。

对【/etc/vsftpd.conf】进行文件配置:

pasv_enable=YES #使能被动模式

pasv_min_port=8084 #限定FTP服务器被动模式端口范围

pasv_max_port=8085

然后在服务器的安全组入方向添加开放的端口。

这里可以根据个人情况将端口范围扩大,比如

pasv_min_port=50000
pasv_max_port=60000

对应修改安全组即可。

SSH查看端口适用情况:

netstat -nultp

netstat -anp | grep 端口号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值