Настройка FTP на сервере Amazon Cloud Server
Я пытаюсь настроить 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
Но я не знаю, где их написать.
Ответы
Ответ 1
Jaminto отлично справился с этим вопросом, но недавно я прошел этот процесс и хотел расширить ответ Jaminto.
Я предполагаю, что у вас уже есть экземпляр EC2, созданный и связанный с ним Elastic IP Address.
Шаг # 1: установите vsftpd
SSH на ваш сервер EC2. Тип:
> sudo yum install vsftpd
Это должно установить vsftpd.
Шаг # 2: Откройте порты FTP в вашем экземпляре EC2
Затем вам нужно будет открыть порты FTP на вашем сервере EC2. Войдите в консоль управления AWS EC2 и выберите группы безопасности в дереве навигации слева. Выберите группу безопасности, назначенную вашему экземпляру EC2. Затем выберите вкладку "Входящие" и нажмите "Изменить":
![enter image description here]()
Добавьте два пользовательских правила TCP с диапазонами портов 20-21 и 1024-1048. Для Source вы можете выбрать "Anywhere". Если вы решите установить источник на свой собственный IP-адрес, имейте в виду, что ваш IP-адрес может измениться, если он назначается через DHCP.
![enter image description here]()
Шаг # 3: Внесите обновления в файл vsftpd.conf
Измените файл conf vsftpd, введя:
> sudo vi /etc/vsftpd/vsftpd.conf
Отключите анонимный FTP, изменив эту строку:
anonymous_enable=YES
to
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-адрес:
![enter image description here]()
Чтобы сохранить изменения, нажмите escape, затем введите :wq
, затем нажмите enter.
Шаг # 4: Перезапустить vsftpd
Перезапустите vsftpd, набрав:
> sudo /etc/init.d/vsftpd restart
Вы должны увидеть сообщение, которое выглядит следующим образом:
![enter image description here]()
Если это не работает, попробуйте:
> 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
Вот как это будет выглядеть:
![enter image description here]()
Шаг # 6: Ограничение пользователей в своих домашних каталогах
На данный момент ваши пользователи FTP не ограничены их домашними каталогами. Это не очень безопасно, но мы можем исправить это довольно легко.
Отредактируйте свой файл vsftpd conf, набрав:
> sudo vi /etc/vsftpd/vsftpd.conf
Не комментируйте строку:
chroot_local_user=YES
Он должен выглядеть так, как только вы закончите:
![enter image description here]()
Перезагрузите сервер vsftpd следующим образом:
> sudo /etc/init.d/vsftpd restart
Все сделано!
Приложение A: выживание перезагрузки
vsftpd не запускается автоматически при загрузке вашего сервера. Если вы похожи на меня, это означает, что после перезагрузки вашего экземпляра EC2 вы почувствуете момент ужаса, когда FTP, похоже, сломается, но на самом деле он просто не работает!. Вот удобный способ исправить это:
> sudo chkconfig --level 345 vsftpd on
В качестве альтернативы, если вы используете redhat, другим способом управления вашими услугами является использование этого элегантного графического пользовательского интерфейса для управления тем, какие службы должны запускаться автоматически:
> sudo ntsysv
![enter image description here]()
Теперь vsftpd автоматически запустится, когда ваш сервер загрузится.
Приложение B: Изменение домашнего каталога FTP пользователя
* ПРИМЕЧАНИЕ. Иман Седиги опубликовал более элегантное решение для ограничения доступа пользователей к определенному каталогу. Пожалуйста, обратитесь к его отличному решению, размещенному в качестве ответа *
Возможно, вы захотите создать пользователя и ограничить доступ к FTP в определенную папку, например /var/www. Для этого вам необходимо изменить домашний каталог по умолчанию:
> sudo usermod -d /var/www/ username
В этом конкретном примере типично давать права пользователя группе "www", которая часто связана с папкой /var/www:
> sudo usermod -a -G www username
Ответ 2
Чтобы включить пассивный 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
Ответ 3
Спасибо @clone45 за хорошее решение. Но у меня была только одна важная проблема с Приложением b его решения. Сразу после того, как я сменил домашний каталог на 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. Поэтому мы присоединяем его к тому, чтобы:
sudo usermod -G sftponly имя пользователя
. 4. Ограничьте доступ пользователей только к var/www/html.
Чтобы ограничить доступ пользователей только к папке var/www/html, нам нужно сделать каталог в домашнем каталоге (с именем "html" ) этого пользователя, а затем mount/var/www/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
Ответ 4
Великая статья... работала как бриз на 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 {} \;
Ответ 5
Если вы включили ufw, запомните добавление ftp:
> sudo ufw allow ftp
Мне потребовалось 2 дня, чтобы понять, что я включил ufw.
Ответ 6
Это не будет нормально, пока вы не добавите своего пользователя в группу www следующими командами:
sudo usermod -a -G www <USER>
Это разрешает проблему разрешения.
Задайте путь по умолчанию, добавив следующее:
local_root=/var/www/html
Ответ 7
Не забудьте обновить брандмауэр iptables, если у вас есть доступ к диапазонам 20-21 и 1024-1048.
Сделайте это из /etc/sysconfig/iptables
Добавление строк следующим образом:
-A INPUT -m state -state NEW -m tcp -p tcp -dport 20:21 -j ACCEPT
-A INPUT -m state -state NEW -m tcp -p tcp -dport 1024: 1048 -j ACCEPT
И перезапустите iptables с помощью команды:
sudo service iptables restart
Ответ 8
Я упростил шаги clone45:
Откройте порты, как он упомянул
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
Ответ 9
Это отличная рецензия. Обратите внимание, что вам, вероятно, потребуется добавить пользователя, которого вы создали, в группу "FTP":
> gpasswd -a <usr> ftp
Ответ 10
Я последовал за 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 плагин был успешно установлен.
Ответ 11
возможно, стоит упомянуть в дополнение к clone45 answer:
Исправление прав записи для пользователей Chrooted FTP в vsftpd
Версия vsftpd, которая поставляется с Ubuntu 12.04 Precise, не разрешить chrooted местным пользователям писать по умолчанию. По умолчанию вы будете в файле /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 перестает работать после обновления
Ответ 12
FileZila - хороший инструмент FTP для настройки с Amazon Cloud.
- Загрузите клиент FileZila из https://filezilla-project.org/
- Нажмите "Файл" → "Управление сайтом" →
- Новый сайт
- Укажите IP-адрес имени хоста вашего местоположения облака амазонки (если есть порт)
- Протокол - SFTP (может меняться в зависимости от вашего требования)
- Тип входа - обычный (система не будет запрашивать пароль каждый раз)
- Укажите имя пользователя и пароль.
- Connect.
Вам нужно сделать этот шаг всего 1 раз, позже он будет загружать контент на тот же IP-адрес и тот же сайт.
Ответ 13
Если вы получили неверный пароль 530
Требуется еще 1 шаг
в файле /etc/shells
Добавьте следующую строку
/Бен/ложь