我在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实例? (步骤请 - 它可以节省大量时间,而且对其他人来说是一个很好的资源。)
答案 0 :(得分:37)
在Antti Haapala的指导帮助下我明白了。
您甚至不需要在创建的实例上设置VSFTP。您所要做的就是确保FileZilla中的设置正确。
这就是我所做的(我在Mac上,所以它应该在Windows上类似):
这就是你现在可以遍历你的EC2系统了。有一个问题。因为您以ec2-user身份登录而不是root用户,所以无法修改任何内容。要解决此问题,请更改应用程序所在目录的组所有权(/ var / www / html)或其他任何内容。我会改变它,所以它在EBS卷上。 ;)还要确保该组具有读写和执行权限。 ec2-user的组是ec2-user。让其他人都没有。所以你通过ssh登录时使用的命令
sudo chgrp ec2-user file/folder
sudo chmod 770 file/folder
希望这有助于某人。
答案 1 :(得分:4)
FTP是一个非常麻烦的协议,因为它需要一个辅助管道来进行实际的数据传输,并且在管道传输时并不能很好地工作。使用ssh,您应该使用与FTP无关但与协议完全不同的SFTP。
另请阅读Wikipedia
答案 2 :(得分:0)
将密钥添加到www是灾难的秘诀!您的应用程序的任何小问题都将成为安全噩梦。
作为ftp的替代方案,请考虑使用基于capistrano的rsync或更“成熟”的部署策略。周围有很多工具。
答案 3 :(得分:0)
Antti Haapala的提示是解决EC2 SFTP的唯一方法。它工作得很好!请注意,您需要创建/var/www/.ssh/文件夹并将authorized_keys文件复制到那里。
之后,您需要将authorized_keys所有权更改为www-data,以便ssh连接可以识别它。亚马逊应该让人们知道。我在论坛,常见问题解答等中找到了这个。根本没有任何线索......再次为stackoverflow干杯,走的路还哈哈!