Налаштування FTP на хмарному сервері Amazon [закрито]


257

Я намагаюся налаштувати FTP на Amazon Cloud Server, але без везіння. Я шукаю в мережі і немає конкретних кроків, як це зробити.

Я знайшов такі команди для запуску:

$ 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

Але я не знаю, куди їх написати.


10
Це питання потрібно перенести на serverfault.com.
Jérôme Verstrynge

Відповіді:


570

Джамінто зробив чудову роботу, відповідаючи на запитання, але нещодавно я сам пройшов процес і хотів розширити відповідь Джамінто.

Я припускаю, що у вас вже створений екземпляр EC2 і пов’язаний з ним Elastic IP Address.


Крок №1: Встановіть vsftpd

SSH на ваш сервер EC2. Тип:

> sudo yum install vsftpd

Це має встановити vsftpd.

Крок №2: Відкрийте порти FTP на екземплярі EC2

Далі вам потрібно буде відкрити порти FTP на вашому сервері EC2. Увійдіть до консолі управління AWS EC2 та виберіть Групи безпеки з дерева навігації зліва. Виберіть групу безпеки, призначену вашому екземпляру EC2. Потім виберіть вкладку "Вхідні" та натисніть "Змінити":

введіть тут опис зображення

Додайте два спеціальні правила TCP з діапазонами портів 20-21 та 1024-1048. Для джерела ви можете вибрати "В будь-якому місці". Якщо ви вирішили встановити Source для власної IP-адреси, пам’ятайте, що ваша IP-адреса може змінитися, якщо вона буде призначена через DHCP.

введіть тут опис зображення



Крок №3: Оновіть файл vsftpd.conf

Відредагуйте конф-файл vsftpd, ввівши:

> 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-адресу:

введіть тут опис зображення

Щоб зберегти зміни, натисніть клавішу Escape і введіть :wq, а потім натисніть клавішу Enter.



Крок №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 знову, ввівши:

> 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

3
В step 3після додавання рядка в файлі, як я можу зберегти його?
Суміт Біджвані

2
ок все готово, тепер як я можу підключитися до ftp?
Суміт Біджвані

7
Привіт Суміт. Vi - хитрий хитрий редактор. Щоб зберегти свою роботу, введіть escape, потім ": wq" (без лапок), а потім натисніть клавішу Enter. Що стосується FTP, на це важко відповісти, оскільки він базуватиметься на вашому FTP-клієнті. Якщо у мене є час, я спробую додати кілька інструкцій до своєї відповіді щодо налаштування деяких популярних клієнтів FTP. Особисто я використовую Aptana Studio. В Aptana ви створюєте сайт SFTP і надаєте Aptana файл аутентифікації відкритого ключа, який ви отримали під час створення свого екземпляра EC2. Якщо ви використовуєте filezilla, спробуйте скористатися pageant.exe. Ура!
клон45

6
Це чудово. Дуже ясно. Велике спасибі.
AC Patrice

11
Насправді, можливо, він міг би дати мені кредит. Він відмовився від моєї відповіді 13 січня
clone45

27

Щоб увімкнути пасивний ftp на сервері EC2, вам потрібно налаштувати порти, які ваш FTP-сервер повинен використовувати для вхідних з'єднань, а потім відкрити список доступних портів для з'єднань даних клієнта ftp.

Я не так знайомий з Linux, але команди, які ви опублікували, - це кроки встановити ftp-сервер, налаштувати правила брандмауера ec2 (через API AWS), а потім налаштувати 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


Я знаю, що означають ці рядки, але я не знаю, куди їх набрати ... У цьому проблема ...
SharkTheDark

1
в командному рядку на сервері, на який ви встановлюєте ftp-сервер?
Джамінто

2
Підключіться до свого сервера через SSH: blog.taggesell.de/index.php?/archives/…
jaminto

Якщо ви все-таки отримаєте помилку (500 OOPS: vsftpd: відмова від запуску із кореневим кодом, що
записується,

Я вражений тим, що анонімний FTP за умовчанням увімкнено!
jeffkee

16

Дякуємо @ clone45 за приємне рішення. Але у Додатку б до його рішення була лише одна важлива проблема. Відразу після того, як я змінив домашній каталог на var / www / html, я не зміг підключитися до сервера через ssh та sftp, оскільки він завжди показує наступні помилки

permission denied (public key)

або в FileZilla я отримав цю помилку:

No supported authentication methods available (server: public key)

Але я міг отримати доступ до сервера через звичайне FTP-з'єднання.

Якщо ви зіткнулися з тією ж помилкою, просто скасуйте додаток b рішення @ clone45, встановивши для користувача домашній каталог за замовчуванням:

sudo usermod -d /home/username/ username

Але коли ви встановите домашній каталог користувача за замовчуванням, то користувач має доступ до багатьох інших папок поза / var / www / http. Отже, щоб убезпечити ваш сервер, виконайте наступні дії:

1- Створіть групу sftponly Створіть групу для всіх користувачів, які ви хочете обмежити їх доступ лише до ftp та sftp доступу до var / www / html. скласти групу:

sudo groupadd sftponly

2- Ув’язнення chroot Щоб обмежити доступ цієї групи до сервера через sftp, ви повинні ув’язнити chroot, щоб не дозволити користувачам групи отримати доступ до будь-якої папки, за винятком html-папки, у її домашньому каталозі. зробити це відкрити /etc/ssh/sshd.config у vim з sudo. В кінці файлу прокоментуйте цей рядок:

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

А потім додайте цей рядок нижче цього:

Subsystem sftp internal-sftp

Тож ми замінили підсистему на внутрішню 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 to / 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- Блокувати доступ до оболонки Якщо ви хочете обмежити доступ до доступу до оболонки, щоб зробити її більш захищеною, просто змініть оболонку за замовчуванням на bin / false, як описано нижче:

sudo usermod -s /bin/false username

на вашому, sudo mount --bind /var/www /home/username/htmlмені кажуть, що немає папки www. Я припускаю, що це робиться з root (де папка / home)?
elliotrock

1
sudo chown root:www /var/www/htmlконстатує chown: недійсна група: 'root: www'
elliotrock

2
Частина 6 повинна бути sudo usermod -s /sbin/nologin usernameспричиненою обмеженнями оболонки vsftpd у модулі пам’яті за замовчуванням (а в моєму випадку, здається, вона працює краще) І частину 4 mountпотрібно робити при кожному перезавантаженні, тому це гарна ідея розмістити її в rc.local.
phy25

11

Чудова стаття ... спрацював як вітер на 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 {} \;

11
що chmods кожен файл і папку до 777, що не захищено для веб-сайту
sergiogx

ГАРАЗД. То яка зміна ви пропонуєте з цього приводу?
Раві Шенкер

3
Вам слід призначити необхідні дозволи, а не просто відкривати всі дозволи на все, або ви вимагаєте неприємностей. Наприклад, використання chmod -R ug + rw / var / www / html надасть права читання та запису для користувачів та групи для всіх файлів, не надаючи дозволів на виконання та дозволів виконувати іншим. Потім налаштуйте користувачів та групи відповідно, щоб не потрібно змінювати інших. Тобто, якщо ваш ftp користувач може прочитати та записати всі файли, а ваш веб-сервер зможе прочитати, що вам встановлено. Поставте обох користувачів у одну групу та додайте rw до користувача та r у групу.
AaronM

Вам слід застосувати 775 до / var / www / html. решта підпапок і файлів можуть отримати дозволи відповідно до потреби. 777 дуже небезпечний.
Іман Седігі

6

Якщо у вас включено ufw, пам’ятайте, додайте ftp:

> sudo ufw allow ftp

Мені знадобилося 2 дні, щоб зрозуміти, що я включив ufw.


або iptables, або ... так, я завжди також забуваю!
jsh

6

Не буде нормально, поки ви не додасте свого користувача до групи www наступними командами:

sudo usermod -a -G www <USER>

Це вирішує проблему дозволу.

Встановіть шлях за замовчуванням, додавши це:

local_root=/var/www/html

4

Не забудьте оновити брандмауер iptables, якщо у вас є дозвіл діапазонів 20-21 та 1024-1048.

Зробіть це з / etc / sysconfig / iptables

Додавання таких рядків:

-A ВХОД -m стан - держава НОВО -m tcp -p tcp - доповідь 20:21 -j ПРИЙОМ

-A Вхід -m стан - держава НОВО -m tcp -p tcp - доповідь 1024: 1048 -j ПРИХОД

І перезапустіть iptables командою:

перезапустити iptables служби sudo


4

Я спростив клон45 кроків:

Відкрийте порти, як він згадував

sudo su
sudo yum install vsftpd
echo -n "Public IP of your instance: " && read publicip
echo -e "anonymous_enable=NO\npasv_enable=YES\npasv_min_port=1024\npasv_max_port=1048\npasv_address=$publicip\nchroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf
sudo /etc/init.d/vsftpd restart

2

Я дотримувався відповіді clone45 до кінця. Чудова стаття! Оскільки мені потрібен FTP-доступ для встановлення плагінів на один із моїх сайтів wordpress, я змінив домашній каталог на / var / www / mysitename. Потім я продовжував додавати свого ftp користувача до групи apache (або www), як це:

sudo usermod -a -G apache myftpuser

Після цього я все-таки побачив цю помилку на сторінці встановлення плагіну WP: "Неможливо знайти каталог вмісту WordPress (wp-content)". Шукали та знайшли це рішення на сесії wp.org Q&A: 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 був успішно встановлений.


0

можливо варто згадати на додаток до відповіді clone45 :

Виправлення дозволів на запис для Chrooted FTP-користувачів у vsftpd

Версія vsftpd, що постачається з Ubuntu 12.04 Precision, не дозволяє замовчуванням писати локальним користувачам записи. За замовчуванням у вас це буде в /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

Посилання:
Виправлення дозволів на запис для Chrooted FTP-користувачів у vsftpd
VSFTPd перестало працювати після оновлення


0

У випадку, якщо ви отримуєте 530 пароль невірно

Ще 1 крок необхідний

у файлі / etc / shell

Додайте наступний рядок

/ bin / false


-2

FileZila - хороший інструмент FTP для налаштування з Amazon Cloud.

  1. Завантажте клієнт FileZila з https://filezilla-project.org/
  2. Клацніть на Файл -> Менеджер сайтів ->
  3. Новий сайт
  4. Укажіть ІР-адресу хоста для вашого місця розташування у хмарі Amazon (Порт, якщо він є)
  5. Протокол - SFTP (може змінюватися залежно від вашої вимоги)
  6. Тип входу - Нормальний (Отже система не запитуватиме пароль щоразу)
  7. Укажіть ім’я користувача та пароль.
  8. Підключення.

Вам потрібно зробити цей крок лише 1 раз, пізніше він завантажить вміст на ту саму IP-адресу та на той самий сайт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.