linux - 在亚马逊云服务器上设置 FTP

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

2年前关闭。



Improve this question




我正在尝试在 Amazon Cloud Server 上设置 FTP,但没有运气。
我在网上搜索,没有具体的步骤如何去做。

我发现这些命令可以运行:

$ yum install vsftpd
$ ec2-authorize default -p 20-21
$ ec2-authorize default -p 1024-1048
$ vi /etc/vsftpd/vsftpd.conf
#<em>---Add following lines at the end of file---</em>
    pasv_enable=YES
    pasv_min_port=1024
    pasv_max_port=1048
    pasv_address=<Public IP of your instance>
$ /etc/init.d/vsftpd restart

但我不知道在哪里写它们。

最佳答案

Jaminto 在回答这个问题方面做得很好,但我最近自己经历了这个过程,并想扩展 Jaminto 的回答。

我假设您已经创建了一个 EC2 实例并为其关联了一个弹性 IP 地址。

第 1 步:安装 vsftpd

通过 SSH 连接到您的 EC2 服务器。类型:

> sudo yum install vsftpd

这应该安装 vsftpd。

第 2 步:打开 EC2 实例上的 FTP 端口

接下来,您需要打开 EC2 服务器上的 FTP 端口。登录 AWS EC2 管理控制台并从左侧导航树中选择安全组。选择分配给您的 EC2 实例的安全组。然后选择入站选项卡,然后单击编辑:



添加两个自定义 TCP 规则,端口范围为 20-21 和 1024-1048。对于来源,您可以选择“任何地方”。如果您决定将 Source 设置为您自己的 IP 地址,请注意,如果您的 IP 地址是通过 DHCP 分配的,则它可能会更改。



第 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 地址:



要保存更改,请按 Esc,然后键入 :wq ,然后按回车键。

第 4 步:重新启动 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

https://stackoverflow.com/questions/7052875/

相关文章:

regex - 如何在 find 命令中使用正则表达式?

python - 有哪些好的 Python ORM 解决方案?

python - 在 Python 中计算字典中不同键的数量

python - 在python中获取随机 bool 值?

linux - 如何找出文本文件中的行尾?

linux - Linux 内核是如何测试的?

python - 如何找到已安装的 pandas 版本

python - 如何在管道中使用 `subprocess` 命令

linux - 使用端口 80 (Ubuntu/Linode) 运行 Node.js 时的最佳实践

python - 将 timedelta 转换为天、小时和分钟