Проблемы с загрузкой в ​​EC2. Как вы делаете FTP?

Я настроил новый экземпляр EC2 на AWS и пытаюсь заставить FTP работать для загрузки моего приложения. Я установил VSFTPD по умолчанию, поэтому ничего не менял в файле конфигурации (/etc/vsftpd/vsftpd.conf).

Я не указал свой порт 21 в группе безопасности, потому что я делаю это через SSH. Я вхожу в свой 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

Есть ли что-то, чего мне не хватает в моем файле конфигурации. Параметр, который необходимо установить или отключить. Я подумал, что это здорово, что это соединилось, но когда время истекло, вы могли представить мое лицо. Это означало, что пора начать рыскать по сети, пытаясь найти ответ! Теперь не повезло.

Я использую стандартную 64-разрядную версию Amazon AMI. У меня традиционная лампа.

Может ли кто-нибудь направить меня в правильном направлении? Я много читал о том, как заставить это работать, но все они неполные, как будто им стало скучно на полпути, когда я печатал, как это сделать.

Я бы тоже хотел услышать, как вы, ребята, это делаете. Если это облегчает жизнь. Как вы загружаете свои приложения в инстанс EC2? (Шаги, пожалуйста - это экономит много времени, а также является отличным ресурсом для других.)


person Sententia    schedule 30.10.2011    source источник


Ответы (4)


Я понял это после того, как помог Антти Хаапала.

Вам даже не нужна настройка VSFTP для созданного экземпляра. Все, что вам нужно сделать, это убедиться, что настройки в FileZilla правильные.

Вот что я сделал (у меня Mac, поэтому в Windows должно быть похоже):

  1. Откройте файл zilla и перейдите в настройки.
  2. В настройках нажмите sftp и добавьте новый ключ. Это ваша пара ключей для вашего экземпляра ec2. Вам нужно будет преобразовать его в формат, который использует FileZilla. Это даст вам подсказку для преобразования
  3. Нажмите «ОК» и вернитесь к менеджеру сайта.
  4. В диспетчере сайта введите свой публичный адрес EC2, это также может быть ваш эластичный IP-адрес.
  5. Убедитесь, что протокол установлен на SFTP
  6. Введите имя пользователя ec2-user
  7. Удалите все из поля пароля - сделайте его пустым
  8. Все сделано! Теперь подключитесь.

Вот и все, теперь вы можете перемещаться по вашей системе EC2. Есть подвох. Поскольку вы вошли в систему как пользователь ec2, а не root, вы не сможете ничего изменить. Чтобы обойти это, измените групповое владение каталогом, в котором будет лежать ваше приложение (/var/www/html) или что-то еще. Я бы изменил его, чтобы он находился на томе EBS. ;) Также убедитесь, что у этой группы есть права на чтение, запись и выполнение. Группа пользователя ec2 — пользователь ec2. Оставьте всех остальных как ничто. Итак, команда, которую вы используете при входе в систему через ssh

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

Надеюсь, это поможет кому-то.

person Sententia    schedule 30.10.2011
comment
Что ж, вы всегда можете скопировать открытый ключ из .ssh/authorized_keys пользователя ec2 для www-данных или как там пользователь называется в вашем дистрибутиве... и подключиться напрямую как пользователь www. - person Antti Haapala; 31.10.2011
comment
После целого дня поиска этот ответ наконец сделал это. Большое спасибо за размещение этого! - person user1011713; 15.07.2012
comment
Это лучший ответ на этой странице. И самый подробный. Цифровая пятерка! - person courtsimas; 28.03.2013
comment
Великолепно! Серьезно, это самый четкий ответ, который я читал весь день. Хотел бы я, чтобы люди всегда писали такие ответы... - person djthoms; 16.06.2013
comment
Потрясающий ответ! Спасибо! - person Patrick Lee Scott; 13.06.2016

FTP — очень проблемный протокол, потому что для фактической передачи данных требуется вторичный канал, и он определенно не работает хорошо при конвейерной передаче. С ssh вы должны использовать SFTP, который не имеет ничего общего с FTP, но является совершенно другим протоколом.

Читайте также в Википедии

person Antti Haapala    schedule 30.10.2011
comment
Значит, я все делал неправильно. Я пытался использовать FTP, когда должен был использовать SFTP. Спасибо, Антти Хаапала! - person Sententia; 31.10.2011
comment
Нет проблем, давайте убьем FTP :) - person Antti Haapala; 31.10.2011

Добавление ключа к www — это путь к катастрофе! Любая незначительная проблема с вашим приложением станет кошмаром безопасности.

В качестве альтернативы ftp рассмотрите возможность использования rsync или более «зрелой» стратегии развертывания, основанной, например, на capistrano. Для этого есть множество инструментов.

person kindaian    schedule 27.01.2012

Советы Антти Хаапала — единственный способ обойти EC2 SFTP. Это работает просто отлично! Только учтите, что вам нужно создать папку /var/www/.ssh/ и скопировать туда файл author_keys.

После этого вам нужно изменить владельца author_keys на www-data, чтобы ssh-соединение могло его распознать. Amazon должен сообщить об этом людям. Я искал это на форумах, в часто задаваемых вопросах и т. Д. Вообще без понятия ... Приветствую еще раз stackoverflow, путь вперед, ха-ха!

person Braconnot_P    schedule 24.05.2013