Jaminto 在回答这个问题方面做得很好,但我最近自己经历了这个过程,并想扩展 Jaminto 的答案。
我假设您已经创建了一个 EC2 实例并关联了一个弹性 IP 地址。
第 1 步:安装 vsftpd
SSH 到您的 EC2 服务器。类型:
> sudo yum install vsftpd
这应该安装 vsftpd。
第 2 步:打开 EC2 实例上的 FTP 端口
接下来,您需要打开 EC2 服务器上的 FTP 端口。登录 AWS EC2 管理控制台,从左侧导航树中选择安全组。选择分配给您的 EC2 实例的安全组。然后选择 Inbound 选项卡,然后单击 Edit:
添加两个自定义 TCP 规则,端口范围为 20-21 和 1024-1048。对于源,您可以选择“任意位置”。如果您决定将 Source 设置为您自己的 IP 地址,请注意如果通过 DHCP 分配您的 IP 地址可能会发生变化。
第 3 步:更新 vsftpd.conf 文件
通过键入以下内容编辑您的 vsftpd conf 文件:
> sudo vi /etc/vsftpd/vsftpd.conf
通过更改此行禁用匿名 FTP:
anonymous_enable=YES
到
anonymous_enable=NO
然后将以下行添加到 vsftpd.conf 文件的底部:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>
您的 vsftpd.conf 文件应如下所示 - 除了确保将 pasv_address 替换为面向公众的 IP 地址:
要保存更改,请按 Escape,然后输入 :wq,然后按 Enter。
第四步:重启 vsftpd
输入以下命令重启 vsftpd:
> sudo /etc/init.d/vsftpd restart
您应该会看到如下所示的消息:
如果这不起作用,请尝试:
> sudo /sbin/service vsftpd restart
第 5 步:创建 FTP 用户
如果您查看 /etc/vsftpd/user_list,您会看到以下内容:
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
这基本上是在说“不允许这些用户进行 FTP 访问”。 vsftpd 将允许任何不在此列表中的用户进行 FTP 访问。
因此,为了创建一个新的 FTP 帐户,您可能需要在您的服务器上创建一个新用户。 (或者,如果您已经有一个未在 /etc/vsftpd/user_list 中列出的用户帐户,则可以跳到下一步。)
在 EC2 实例上创建新用户非常简单。例如,要创建用户“bret”,请键入:
> sudo adduser bret
> sudo passwd bret
这是它的样子:
第 6 步:将用户限制在他们的主目录中
此时,您的 FTP 用户不受限于他们的主目录。这不是很安全,但我们可以很容易地修复它。
键入以下内容再次编辑您的 vsftpd conf 文件:
> sudo vi /etc/vsftpd/vsftpd.conf
取消注释掉该行:
chroot_local_user=YES
完成后应该是这样的:
像这样再次重启 vsftpd 服务器:
> sudo /etc/init.d/vsftpd restart
全部完成!
附录 A:在重新启动后幸存
vsftpd 不会在您的服务器启动时自动启动。如果您像我一样,这意味着在重新启动您的 EC2 实例后,当 FTP 似乎被破坏时,您会感到一阵恐惧——但实际上,它只是没有运行!。这是解决此问题的便捷方法:
> sudo chkconfig --level 345 vsftpd on
或者,如果您使用的是 redhat,另一种管理服务的方法是使用这个漂亮的图形用户界面来控制哪些服务应该自动启动:
> sudo ntsysv
现在 vsftpd 将在您的服务器启动时自动启动。
附录 B:更改用户的 FTP 主目录
* 注意:Iman Sedighi 发布了一个更优雅的解决方案,用于限制用户对特定目录的访问。请参考他作为答案发布的出色解决方案*
您可能希望创建一个用户并将他们的 FTP 访问权限限制为特定文件夹,例如 /var/www。为此,您需要更改用户的默认主目录:
> sudo usermod -d /var/www/ username
在这个特定示例中,通常将用户权限授予“www”组,该组通常与 /var/www 文件夹相关联:
> sudo usermod -a -G www username