如何在我的 Lightsail 实例上设置 FTP 服务器和 FTP 用户?

2 分钟阅读
0

我想在运行 Amazon Linux 2、CentOS、Ubuntu 或 Debian 的 Amazon Lightsail 实例上设置文件传输功能协议(FTP)服务器和 FTP 用户。

解决方案

**注意:**FTP 以明文形式传输所有数据和密码。SSH 文件传输功能协议(SFTP)是连接实例和传输数据的更安全方式。有关使用 SFTP 的信息,请参阅Connecting to your Linux or Unix instance in Amazon Lightsail using SFTP

设置 FTP 服务器和 FTP 用户

1.运行以下命令,安装 VSFTPD 软件包:

Amazon Linux 2 和 CentOS:

sudo yum install vsftpd -y

Ubuntu 和 Debian:

sudo apt install vsftpd -y

如果您收到错误,说明软件包不可用,请运行以下命令,更新软件包列表:

sudo apt update -y

2.编辑 vsftpd.config 文件,根据您的环境更新变量。

vsftpd.config 文件位置因您的操作系统而异:

  • Amazon Linux 2 和 CentOS:/etc/vsftpd/vsftpd.conf
  • Debian 和 Ubuntu:/etc/vsftpd.conf

在以下示例中,根据您的使用案例更新变量。以下参数是所有操作系统的通用参数。

anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
listen_port=10021
pasv_enable=YES
pasv_min_port=21000
pasv_max_port=21999
pasv_addr_resolve=NO

**注意:**端口 21 是 FTP 的默认端口。但是,出于安全原因,在前面的示例中,使用自定义端口 10021 作为 FTP 的端口。要自定义端口,请将 listen_port 更改为所需的端口,然后将 connect_from_port_20 设置为 NO。确保在实例防火墙上激活计划用于 FTP 的端口。在前面的示例中,在自定义和 Lightsail 防火墙上激活了端口 10021 和 21000-21999。另外,文件中不能同时包含 listenlisten_ipv6 参数。更新您的配置文件,确保只有一个参数设置为 YES

以下参数是针对操作系统的具体参数。除前面的示例外,还需要根据您的操作系统编辑以下变量。

Amazon Linux 2 和 CentOS

chroot_list_file=/etc/vsftpd/chroot_listuserlist_file=/etc/vsftpd/user_list

Debian 和 Ubuntu:

chroot_list_file=/etc/vsftpd.chroot_listuserlist_file=/etc/vsftpd.userlist

3.运行以下命令,添加 FTP 用户:

sudo useradd -m ftp_user

**注意:**在前面的示例中,将 ftp_user 替换为您选择的用户名。

4.运行以下命令,为用户创建密码:

sudo passwd ftp_user

5.运行以下命令,更改 /home/ftp_user 文件的所有权。此命令使 ftp_user 成为文件所有者。

sudo chown ftp_user:ftp_user -R /home/ftp_user/

6.运行以下命令,将新用户添加到 vsftpd user_list 中。使用 -a 标志附加到文件中。

Amazon Linux 2 和 CentOS

sudo echo "ftp_user" | sudo tee -a /etc/vsftpd/user_list

Debian 和 Ubuntu

运行以下命令,创建 userlist 文件并将新用户添加到该文件中:

sudo echo "ftp_user" | sudo tee -a /etc/vsftpd.userlist

7.重启 vsftpd 服务:

sudo systemctl restart vsftpd

8.连接到 FTP 服务器。以下示例使用 Filezilla 普通 FTP。

Status:    Connecting to 54.xxx.xxx.x2:10021...
Status:    Connection established, waiting for welcome message...
Status:    Plain FTP is insecure. Please switch to FTP over TLS.
Status:    Logged in
Status:    Retrieving directory listing...
Status:    Server sent passive reply with unroutable address. Using server address instead.
Status:    Calculating timezone offset of server...
Status:    Timezone offset of server is 0 seconds.
Status:    Directory listing of "/" successful
Status:    Connecting to 54.xxx.1xx.52:10021...
Status:    Connection established, waiting for welcome message...
Status:    Plain FTP is insecure. Please switch to FTP over TLS.
Status:    Logged in
Status:    Starting upload of C:\Users\Administrator\Documents\FTPtest.txt
Status:    Server sent passive reply with unroutable address. Using server address instead.
Status:    File transfer successful, transferred 10 bytes in 1 second
Status:    Retrieving directory listing of "/"...
Status:    Server sent passive reply with unroutable address. Using server address instead.
Status:    Directory listing of "/" successful

故障排除 FTP 服务器设置问题

如果未正确设置 vsftpd.conf 配置文件的参数,FTP 服务器可能无法启动。在这种情况下,运行以下命令以确定配置不正确的选项:

Amazon Linux 2 和 CentOS

sudo /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Debian 和 Ubuntu

sudo /usr/sbin/vsftpd /etc/vsftpd.conf
AWS 官方
AWS 官方已更新 10 个月前