上传到 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的?的主要内容,如果未能解决你的问题,请参考以下文章