Jaminto已经很好地回答了这个问题,但我最近自己经历了这个过程,想要扩展一下Jaminto的答案。
我假设您已经创建了一个EC2实例,并将弹性IP地址与其关联。
步骤#1:安装vsftpd
SSH连接到您的EC2服务器。输入以下命令:
> sudo yum install vsftpd
这应该会安装vsftpd。
第二步:打开EC2实例上的FTP端口
接下来,你需要在EC2服务器上打开FTP端口。登录到AWS EC2管理控制台,从左侧导航树中选择“安全组”。选择分配给你的EC2实例的安全组。然后选择“Inbound”选项卡,再点击“编辑”:
![enter image description here](https://istack.dev59.com/GVDMP.webp)
添加两个自定义TCP规则,端口范围为20-21和1024-1048。源可以选择“任何地方”。如果你决定将源设置为自己的IP地址,请注意如果通过DHCP分配IP地址,则您的IP地址可能会更改。
![enter image description here](https://istack.dev59.com/QuXjr.webp)
第三步:更新vsftpd.conf文件
通过输入以下命令来编辑你的vsftpd conf文件:
> sudo vi /etc/vsftpd/vsftpd.conf
通过更改以下行来禁用匿名FTP:
anonymous_enable=YES
为确保理解正确,您需要提供更多上下文信息和要求。当前的输入 "
to
" 翻译后可能不具备意义或缺乏完整性。请提供更多信息以便我能够更好地理解您的请求并提供准确的翻译。
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文件应该看起来像下面的示例 - 请确保用您的公共IP地址替换pasv_address:
![输入图像描述](https://istack.dev59.com/MqGmg.webp)
要保存更改,请按Esc键,然后键入:wq
,然后按Enter键。
第4步:重启vsftpd
键入以下命令以重新启动vsftpd:
> sudo /etc/init.d/vsftpd restart
你应该会看到如下的信息:
![输入图像描述](https://istack.dev59.com/oGWgL.webp)
如果这不起作用,请尝试:
> sudo /sbin/service vsftpd restart
第五步:创建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
以下是将要呈现的内容:
![enter image description here](https://istack.dev59.com/A7Dad.webp)
第六步:限制用户访问其家目录
到这一步,你的FTP用户并没有被限制在访问它们自己的家目录中。这样不是很安全,但我们可以轻松地解决它。
通过输入以下命令编辑你的vsftpd配置文件:
> sudo vi /etc/vsftpd/vsftpd.conf
取消注释这一行代码:
chroot_local_user=YES
完成后,它应该看起来像这样:
再次像这样重新启动vsftpd服务器:
> sudo /etc/init.d/vsftpd restart
全部完成!
附录A:在重启时保证vsftpd可用
vsftpd不会自动启动,当您的服务器重新启动时。如果您和我一样,那么这意味着在重新启动EC2实例后,FTP似乎无法使用,但实际上只是没有运行!以下是一个方便的解决方法:
> sudo chkconfig --level 345 vsftpd on
另外,如果您使用的是RedHat系统,则可以使用这个方便的图形用户界面来管理服务并控制哪些服务应该自动启动:
> sudo ntsysv
![在此输入图片描述](https://istack.dev59.com/DWa49.webp)
现在,vsftpd将自动启动,当你的服务器启动时。
附录B:更改用户的FTP主目录
* 注意:Iman Sedighi已发布了一种更优雅的解决方案,用于限制用户访问特定目录。 请参考他作为答案发布的出色解决方案 *
您可能想创建一个用户,并将其FTP访问权限限制为特定文件夹,例如/var/www。 为此,您需要更改用户的默认主目录:
> sudo usermod -d /var/www/ username
在这个特定的例子中,通常会将用户权限赋予'www'组,该组通常与/var/www文件夹相关联:
> sudo usermod -a -G www username