Jaminto wykonał świetną robotę, odpowiadając na pytanie, ale ostatnio sam to przeszedłem i chciałem rozwinąć odpowiedź Jaminto.
Zakładam, że masz już utworzoną instancję EC2 i przypisałeś do niej elastyczny adres IP.
Krok # 1: Zainstaluj vsftpd
SSH do twojego serwera EC2. Rodzaj:
> sudo yum install vsftpd
To powinno zainstalować vsftpd.
Krok # 2: Otwórz porty FTP w instancji EC2
Następnie musisz otworzyć porty FTP na serwerze EC2. Zaloguj się do konsoli zarządzania AWS EC2 i wybierz Grupy bezpieczeństwa z drzewa nawigacji po lewej stronie. Wybierz grupę zabezpieczeń przypisaną do instancji EC2. Następnie wybierz kartę Przychodzące, a następnie kliknij Edytuj:
Dodaj dwie niestandardowe reguły TCP z zakresami portów 20–21 i 1024–1048. W polu Źródło możesz wybrać opcję „Anywhere”. Jeśli zdecydujesz się ustawić Source na własny adres IP, pamiętaj, że twój adres IP może się zmienić, jeśli zostanie przypisany przez DHCP.
Krok # 3: Zaktualizuj plik vsftpd.conf
Edytuj plik conf vsftpd, wpisując:
> sudo vi /etc/vsftpd/vsftpd.conf
Wyłącz anonimowy FTP, zmieniając ten wiersz:
anonymous_enable=YES
do
anonymous_enable=NO
Następnie dodaj następujące wiersze na dole pliku vsftpd.conf:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>
Twój plik vsftpd.conf powinien wyglądać mniej więcej tak: pamiętaj, aby zastąpić adres pasv_adres swoim publicznym adresem IP:
Aby zapisać zmiany, naciśnij klawisz Escape, następnie wpisz :wq
, a następnie naciśnij klawisz Enter.
Krok # 4: Uruchom ponownie vsftpd
Uruchom ponownie vsftpd, wpisując:
> sudo /etc/init.d/vsftpd restart
Powinieneś zobaczyć komunikat, który wygląda następująco:
Jeśli to nie zadziała, spróbuj:
> sudo /sbin/service vsftpd restart
Krok # 5: Utwórz użytkownika FTP
Jeśli spojrzysz na / etc / vsftpd / user_list, zobaczysz następujące informacje:
# 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
To w zasadzie mówi: „Nie zezwalaj tym użytkownikom na dostęp FTP”. vsftpd pozwoli na dostęp FTP każdemu użytkownikowi spoza tej listy.
Dlatego w celu utworzenia nowego konta FTP może być konieczne utworzenie nowego użytkownika na serwerze. (Lub, jeśli masz już konto użytkownika, którego nie ma na liście / etc / vsftpd / user_list, możesz przejść do następnego kroku.)
Utworzenie nowego użytkownika w instancji EC2 jest dość proste. Na przykład, aby utworzyć użytkownika „bret”, wpisz:
> sudo adduser bret
> sudo passwd bret
Oto jak to będzie wyglądać:
Krok # 6: Ograniczanie użytkowników do ich katalogów domowych
W tym momencie użytkownicy FTP nie są ograniczeni do swoich katalogów domowych. To nie jest bardzo bezpieczne, ale możemy to łatwo naprawić.
Zmodyfikuj ponownie plik conf vsftpd, wpisując:
> sudo vi /etc/vsftpd/vsftpd.conf
Cofnij komentarz:
chroot_local_user=YES
Po zakończeniu powinno wyglądać tak:
Uruchom ponownie serwer vsftpd w następujący sposób:
> sudo /etc/init.d/vsftpd restart
Wszystko gotowe!
Dodatek A: Przeżycie ponownego uruchomienia
vsftpd nie uruchamia się automatycznie po uruchomieniu serwera. Jeśli jesteś podobny do mnie, oznacza to, że po ponownym uruchomieniu instancji EC2 poczujesz chwilę przerażenia, gdy FTP wydaje się być zepsuty - ale w rzeczywistości po prostu nie działa !. Oto przydatny sposób, aby to naprawić:
> sudo chkconfig --level 345 vsftpd on
Alternatywnie, jeśli używasz redhat, innym sposobem zarządzania swoimi usługami jest użycie tego sprytnego graficznego interfejsu użytkownika do kontrolowania, które usługi powinny się automatycznie uruchamiać:
> sudo ntsysv
Teraz vsftpd uruchomi się automatycznie po uruchomieniu serwera.
Dodatek B: Zmiana katalogu domowego FTP użytkownika
* UWAGA: Iman Sedighi opublikował bardziej eleganckie rozwiązanie ograniczające dostęp użytkowników do określonego katalogu. Proszę odnieść się do jego doskonałego rozwiązania opublikowanego jako odpowiedź *
Możesz utworzyć użytkownika i ograniczyć jego dostęp FTP do określonego folderu, takiego jak / var / www. Aby to zrobić, musisz zmienić domyślny katalog domowy użytkownika:
> sudo usermod -d /var/www/ username
W tym konkretnym przykładzie typowe jest udzielanie użytkownikom uprawnień do grupy „www”, która często jest powiązana z folderem / var / www:
> sudo usermod -a -G www username