提示:授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道
我们经常需要在服务器上进行文件管理操作,但是如果每次通过ssh协议去操作也很麻烦,所以我想给服务器上搞一个ftp,这是一种文件传输协议,用于在网络上进行文件传输的一套标准协议,文件传输协议也不止这一种还有很多,主要这次可以免费试用AWS的EC2 12个月,如果光通过web端的终端管理感觉文件操作很不方便,所以就记录一下FTP在AWS EC2上的搭建过程,如有错误,还望各位看官斧正。
首先登录AWS账号,然后转到控制台,选择EC2点击进去
点击实例就可以看到所有的实例列表,我这里是已经创建过,所以有一台,大家第一次进来是什么都没有,然后点击启动新实例
输入名称 + 创建密钥 然后点击启动实例即可新开一台 ec2 实例
我们可以使用标准方式登录 Linux 实例,也可以根据实际操作习惯,选择其他不同的登录方式:
使用远程登录软件登录 Linux 实例或者web 终端
这里我直接使用 root 账号登录
然后我们就要开始 ftp 的安装了
ftp是一种标准的传输协议,然后它的具体软件实现有 vsftpd,它是众多 Linux 发行版中默认的 FTP 服务器。本文以 Amazon Linux 操作系统的EC2为例,使用 vsftpd 软件搭建 Linux 云服务器的 FTP 服务。
vsftpd
。yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
ss -ntpl (查看21端口是否开启)
如果看到状态是这样即表示ftp已经成功启动
这个时候,vsftpd 已经启动,我们需要为这个 fpt 创建一个新的用户
useradd dev
passwd dev
直接键盘输入,因为密码默认是不显示的
mkdir /var/ftp/dev
chown -R ftpuser:ftpuser /var/ftp/test
vi /etc/vsftpd/vsftpd.conf
将 FTP 配置成:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
# listen_ipv6=YES
保存后退出。创建并编辑 chroot_list
文件。
vim /etc/vsftpd/chroot_list
将我们之前创建的 dev
用户写入到 chroot_list
中
systemctl restart vsftpd
搭建好 FTP 服务后,我们需要根据实际使用的 FTP 模式给EC2放通入站规则,这里我们主要放通 21 端口
这里为了方便我直接全部流量都放入了
如果是windows,可以直接通过文件系统访问
ftp://3.85.243.172:21
输入之后会弹出的登录身份窗口中输入 配置 vsftpd
中已设置的用户名及密码。
本文使用的用户名为 dev,密码为 123456789,成功登录后,即可上传及下载文件。
也可以通过 filezilla 进行连接
ftp> ls
550 Permission denied.
500 Unknown command.
Passive mode refused.
解决方法
这个问题是 ftp 服务端没有正确配置访问模式导致的权限拒绝,需要登录 ftp 服务端,执行以下命令,打开 vsftpd.conf 文件。
vim /etc/vsftpd/vsftpd.conf
将 pasv_enable 改为 YES
pasv_enable=YES
然后重启 ftp 服务。
systemctl restart vsftpd
这样就完成了在 aws ec2 上的 ftp 服务搭建,aws ec2 可以搭建很多的服务,例如我们的 smb 等,如果我们需要将文件共享给国外的开发团队,我觉得还是有必要构建一个连接国内外的文件服务,方便两边团队进行文件传输,ec2 给了开发者很大的自定义能力,如果有各种需要出海的业务也可以放到ec2上,有很多的可用区,直接产品面向全球!