上传到 EC2 的问题。你是怎么做FTP的?

Posted

技术标签:

【中文标题】上传到 EC2 的问题。你是怎么做FTP的?【英文标题】:Uploading to EC2 problems. How do you do FTP? 【发布时间】:2011-12-18 04:03:11 【问题描述】:

我已经在 AWS 上设置了一个新的 EC2 实例,我正在尝试让 FTP 工作以上传我的应用程序。我已将 VSFTPD 作为标准安装,因此我没有更改配置文件 (/etc/vsftpd/vsftpd.conf) 中的任何内容。

我没有在安全组中设置端口 21,因为我是通过 SSH 进行的。我像这样通过termal登录我的EC2

sudo ssh -L 21:localhost:21 -vi my-key-pair ec2-user@ec2-instance

我打开 filezilla 并登录到本地主机。在列出目录结构之前,一切都很好。我可以登录并正确,一切似乎都很好,如下所示:

Status: Resolving address of localhost Status: Connecting to [::1]:21... Status: Connection established, waiting for welcome message... Response: 220 Welcome to EC2 FTP service. Command: USER anonymous Response: 331 Please specify the password. Command: PASS ****** Response: 230 Login successful. Command: OPTS UTF8 ON Response: 200 Always in UTF8 mode. Status: Connected Status: Retrieving directory listing... Command: PWD Response: 257 "/" Command: TYPE I Response: 200 Switching to Binary mode. Command: EPSV Response: 229 Entering Extended Passive Mode (|||37302|). Command: LIST Error: Connection timed out Error: Failed to retrieve directory listing

我的配置文件中是否缺少某些内容。需要设置或关闭的设置。我认为它连接起来很棒,但是当它超时时,你可以想象我的脸。这意味着是时候开始在网上搜索并找到答案了!现在运气不好。

我使用的是标准的 Amazon AMI 64 位。我有一个传统的灯设置。

谁能引导我朝着正确的方向前进?我已经阅读了很多关于如何让这个工作的内容,但它们都不完整,好像他们在输入如何做的过程中感到无聊。

我也很想听听你们是如何做到的。如果它让生活更轻松。您如何将您的应用程序上传到 EC2 实例? (请执行步骤 - 它可以节省大量时间,而且对其他人来说是一个很好的资源。)

【问题讨论】:

【参考方案1】:

在 Antti Haapala 的指导下,我想通了。

您甚至不需要在创建的实例上设置 VSFTP。您所要做的就是确保 FileZilla 中的设置正确。

这就是我所做的(我在 Mac 上,所以在 Windows 上应该类似):

    打开文件 zilla 并转到首选项。 在首选项下单击 sftp 并添加一个新密钥。这是您的 ec2 实例的密钥对。您必须将其转换为 FileZilla 使用的格式。它会提示您进行转换 点击确定并返回站点管理器 在站点管理器中输入您的 EC2 公共地址,这也可以是您的弹性 IP 确保协议设置为 SFTP 输入ec2-user的用户名 从密码字段中删除所有内容 - 将其设为空白 全部完成!现在连接。

就是这样,您现在可以遍历您的 EC2 系统。有一个问题。因为您以 ec2-user 而不是 root 身份登录,所以您将无法修改任何内容。要解决此问题,请更改应用程序所在目录的组所有权 (/var/www/html) 或其他任何内容。我会更改它,使其位于 EBS 卷上。 ;) 还要确保该组具有读写和执行权限。 ec2-user 的组是 ec2-user。让其他人一无所有。所以你通过 ssh 登录时使用的命令

sudo chgrp ec2-user file/folder sudo chmod 770 file/folder

希望这对某人有所帮助。

【讨论】:

好吧,您始终可以从 ec2-user 的 .ssh/authorized_keys 中复制用于 www-data 的公钥,或者在您的发行版中调用用户的任何内容...并直接连接为 www用户。 经过一整天的搜索,这个答案终于做到了。非常感谢您发布这个! 这是此页面上的最佳答案。而且最详细。数字高五! 太棒了!这是我一整天读过的最明确的答案。我希望人们一直写这样的答案...... 很棒的答案!谢谢!【参考方案2】:

FTP 是一个非常麻烦的协议,因为它需要一个辅助管道来进行实际的数据传输,并且在管道传输时肯定不能很好地工作。使用 ssh 您应该使用与 FTP 无关但完全不同的协议的 SFTP。

另请阅读Wikipedia

【讨论】:

所以我做错了。当我应该做 SFTP 时,我试图使用 FTP。谢谢安蒂哈帕拉! 没问题,让我们杀死 FTP :)【参考方案3】:

将密钥添加到 www 是灾难的根源!您应用的任何小问题都将成为安全噩梦。

作为 ftp 的替代方案,请考虑使用 rsync 或更“成熟”的基于 capistrano 的部署策略。周围有很多工具。

【讨论】:

【参考方案4】:

Antti Haapala 的技巧是解决 EC2 SFTP 问题的唯一方法。它工作得很好!请注意,您需要创建 /var/www/.ssh/ 文件夹并将 authorized_keys 文件复制到那里。

之后,您需要将 authorized_keys 所有权更改为 www-data,以便 ssh 连接可以识别它。亚马逊应该让人们知道这一点。我在论坛、常见问题解答等中查找了这个。完全没有线索......再次为 *** 干杯,哈哈!

【讨论】:

以上是关于上传到 EC2 的问题。你是怎么做FTP的?的主要内容,如果未能解决你的问题,请参考以下文章

把做好的网页发布到网上用啥工具?怎么发布?

AWS:将S3 Bucket安装到EC2实例。 (后来的FTP隧道)

怎么用JSP把本地的文件夹上传到FTP服务器?

ftp上传的文件为0kb怎么办

编辑网页,上传后,无法显示图片,怎么办?

LINUX:如何检测 ftp 文件上传完成