在亚马逊云服务器上设置 FTP [关闭]

2024-10-17 08:47:00
admin
原创
73
摘要:问题描述:我正在尝试在 Amazon 云服务器上设置 FTP,但没有成功。我在网上搜索,但没有具体的操作步骤。我找到了要运行的命令:$ yum install vsftpd $ ec2-authorize default -p 20-21 $ ec2-authorize default -p 1024-104...

问题描述:

我正在尝试在 Amazon 云服务器上设置 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

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


解决方案 1:

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。对于来源,您可以选择“任意位置”。如果您决定将来源设置为您自己的 IP 地址,请注意,如果通过 DHCP 分配 IP 地址,您的 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 地址:

在此处输入图片描述

要保存更改,请按 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

解决方案 2:

要在 EC2 服务器上启用被动 ftp,您需要配置 ftp 服务器应用于入站连接的端口,然后为 ftp 客户端数据连接打开可用端口列表。

我对 linux 不太熟悉,但您发布的命令是安装 ftp 服务器、配置 ec2 防火墙规则(通过 AWS API)然后配置 ftp 服务器以使用您在 ec2 防火墙上允许的端口的步骤。

所以这一步安装ftp客户端(VSFTP)

> yum install vsftpd

这些步骤配置 ftp 客户端

> vi /etc/vsftpd/vsftpd.conf
--    Add following lines at the end of file --
     pasv_enable=YES
     pasv_min_port=1024
     pasv_max_port=1048
     pasv_address=<Public IP of your instance> 
> /etc/init.d/vsftpd restart

但其他两个步骤更容易通过 Amazon 控制台的 EC2 安全组完成。您需要在那里配置分配给服务器的安全组,以允许在端口 20、21 和 1024-1048 上进行连接

解决方案 3:

感谢@clone45 提供的出色解决方案。但我对他的解决方案附录 b 只有一个重要问题。在我将主目录更改为 var/www/html 后,我无法通过 ssh 和 sftp 连接到服务器,因为它总是显示以下错误

permission denied (public key)

或者在 FileZilla 中我收到此错误:

No supported authentication methods available (server: public key)

但我可以通过正常的 FTP 连接访问服务器。

如果您遇到同样的错误,则只需撤消@clone45 解决方案的附录 b,为用户设置默认主目录:

sudo usermod -d /home/username/ username

但是当您设置用户的默认主目录时,用户可以访问 /var/www/http 之外的许多其他文件夹。因此,要保护您的服务器,请按照以下步骤操作:

1- 创建 sftponly 组
为所有想要限制其访问权限的用户创建一个组,仅限 ftp 和 sftp 访问 var/www/html。创建组:

sudo groupadd sftponly

2- 监禁 chroot
要限制该组通过 sftp 访问服务器,您必须监禁 chroot,以不让组用户访问其主目录中除 html 文件夹之外的任何文件夹。为此,请使用 sudo 在 vi​​m 中打开 /etc/ssh/sshd.config。请在文件末尾注释此行:

Subsystem sftp /usr/libexec/openssh/sftp-server

然后在下面添加这一行:

Subsystem sftp internal-sftp

因此我们用 internal-sftp 替换了子系统。然后在其下方添加以下几行:

 Match Group sftponly
        ChrootDirectory /var/www
        ForceCommand internal-sftp
        AllowTcpForwarding no

添加此行后,我保存了更改,然后通过以下方式重新启动 ssh 服务:

sudo service sshd restart

3- 将用户添加到 sftponly 组
任何您想要限制其访问权限的用户都必须是 sftponly 组的成员。因此,我们通过以下方式将其加入 sftponly:sudo usermod -G sftponly 用户名

4- 限制用户只能访问 var/www/html
要限制用户只能访问 var/www/html 文件夹,我们需要在该用户的主目录(名为“html”)中创建一个目录,然后将 /var/www 挂载到 /home/username/html,如下所示:

sudo mkdir /home/username/html
sudo mount --bind /var/www /home/username/html

5- 设置写权限
如果用户需要对 /var/www/html 进行写访问,那么您必须将用户监禁在 /var/www 中,该用户必须具有 root:root 所有权和 755 的权限。然后,您需要通过添加以下行授予 /var/www/html 的 root:sftponly 所有权和 775 的权限:

sudo chmod 755 /var/www
sudo chown root:root /var/www
sudo chmod 775 /var/www/html
sudo chown root:www /var/www/html

6- 阻止 shell 访问
如果您希望限制访问以不访问 shell 以使其更安全,则只需将默认 shell 更改为 bin/false,如下所示:

sudo usermod -s /bin/false username

解决方案 4:

很棒的文章...在 Amazon Linux AMI 上运行起来非常轻松。

另外两个有用的命令:

更改默认 FTP 上传文件夹

步骤 1:

edit /etc/vsftpd/vsftpd.conf

第 2 步:在页面底部创建一个新条目:

local_root=/var/www/html

对文件夹下的文件应用读取、写入、删除权限,以便您可以使用 FTP 设备进行管理

find /var/www/html -type d -exec chmod 777 {} ;

解决方案 5:

如果你启用了 ufw,请记住添加 ftp:

> sudo ufw allow ftp

我花了两天时间才意识到我启用了 ufw。

解决方案 6:

直到您使用以下命令将您的用户添加到组 www 后,一切才正常:

sudo usermod -a -G www <USER>

这解决了权限问题。

通过添加以下内容设置默认路径:

local_root=/var/www/html

解决方案 7:

如果您有 iptables 防火墙,请不要忘记更新它以允许 20-21 和 1024-1048 范围进入。

从 /etc/sysconfig/iptables 执行此操作

添加如下行:

-A 输入 -m 状态 --状态新 -m tcp -p tcp --dport 20:21 -j 接受

-A 输入 -m 状态 --状态新 -m tcp -p tcp --dport 1024:1048 -j 接受

并使用以下命令重新启动 iptables:

sudo 服务 iptables 重启

解决方案 8:

我简化了 clone45 步骤:

按照他提到的打开端口

sudo su
sudo yum install vsftpd
echo -n "Public IP of your instance: " && read publicip
echo -e "anonymous_enable=NO
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=$publicip
chroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf
sudo /etc/init.d/vsftpd restart

解决方案 9:

我完全按照 clone45 的回答操作。这是一篇很棒的文章!由于我需要 FTP 访问权限来将插件安装到我的一个 wordpress 站点,因此我将主目录更改为 /var/www/mysitename。然后我继续将我的 ftp 用户添加到 apache(或 www)组,如下所示:

sudo usermod -a -G apache myftpuser

此后,我仍然在 WP 的插件安装页面上看到此错误:“无法找到 WordPress 内容目录 (wp-content)”。在 wp.org 问答环节中搜索并找到了此解决方案: https: //wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content,并将以下内容添加到 wp-config.php 的末尾:

if(is_admin()) {
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
    define( 'FS_CHMOD_DIR', 0751 );
}

此后我的WP插件已成功安装。

解决方案 10:

除了clone45的回答之外也许值得一提:

修复 vsftpd 中 Chrooted FTP 用户的写入权限

Ubuntu 12.04 Precise 附带的 vsftpd 版本默认不允许 chrooted 本地用户写入。默认情况下,您将在/etc/vsftpd.conf中找到以下内容:

chroot_local_user=YES
write_enable=YES

为了允许本地用户写入,需要添加以下参数:

allow_writeable_chroot=YES

注意:
写入权限问题可能会显示以下FileZilla错误:

Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Could not connect to server

参考:

修复 vsftpd 中 Chrooted FTP 用户的写入权限

VSFTPd 在更新后停止工作

解决方案 11:

如果你收到 530 密码错误

还需 1 步

在文件 /etc/shells 中

添加以下行

/bin/false

解决方案 12:

FileZila 是与 Amazon Cloud 配合设置的优秀 FTP 工具。

  1. https://filezilla-project.org/下载 FileZila 客户端

  2. 点击文件 -> 站点管理器 ->

  3. 新网站

  4. 提供您的亚马逊云位置的主机名 IP 地址(如果有端口)

  5. 协议 - SFTP(可能会根据您的要求而改变)

  6. 登录类型 - 正常(因此系统不会每次都要求输入密码)

  7. 提供用户名和密码。

  8. 连接。

您只需执行这些步骤一次,稍后它就会将内容上传到相同的 IP 地址和相同的站点。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用