Ich versuche, FTP auf Amazon Cloud Server einzurichten, aber ohne Glück .. Ich suche über das Netz und es gibt keine konkreten Schritte, wie dies zu tun ist.
Ich habe die folgenden Befehle gefunden:
$ 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
Aber ich weiß nicht, wo ich sie schreiben soll.
Jaminto hat die Frage sehr gut beantwortet, aber ich habe den Prozess kürzlich selbst durchlaufen und wollte die Antwort von Jaminto erweitern.
Ich gehe davon aus, dass Sie bereits eine EC2-Instanz erstellt haben und dieser eine elastische IP-Adresse zugewiesen hat.
SSH an Ihren EC2-Server. Art:
> Sudo yum install vsftpd
Dies sollte vsftpd ..__ installieren.
Als Nächstes müssen Sie die FTP-Ports auf Ihrem EC2-Server öffnen. Melden Sie sich bei der AWS EC2 Management Console an und wählen Sie in der Navigationsstruktur links Sicherheitsgruppen aus. Wählen Sie die Sicherheitsgruppe aus, die Ihrer EC2-Instanz zugewiesen ist. Wählen Sie dann die Registerkarte Eingehend aus und klicken Sie auf Bearbeiten:
Fügen Sie zwei benutzerdefinierte TCP - Regeln mit den Portbereichen 20-21 und 1024-1048 hinzu. Als Quelle können Sie "Überall" auswählen. Wenn Sie Source als eigene IP-Adresse festlegen, müssen Sie beachten, dass sich Ihre IP-Adresse möglicherweise ändert, wenn sie über DHCP zugewiesen wird.
Bearbeiten Sie Ihre vsftpd-conf-Datei, indem Sie Folgendes eingeben:
> Sudo vi /etc/vsftpd/vsftpd.conf
Deaktivieren Sie das anonyme FTP, indem Sie diese Zeile ändern:
anonymous_enable=YES
zu
anonymous_enable=NO
Fügen Sie dann die folgenden Zeilen am Ende der Datei vsftpd.conf hinzu:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>
Ihre vsftpd.conf -Datei sollte in etwa wie folgt aussehen - mit der Ausnahme, dass Sie die pasv_address durch Ihre öffentliche IP-Adresse ersetzen:
Um die Änderungen zu speichern, drücken Sie die Escape-Taste, geben Sie :wq
ein und drücken Sie die Eingabetaste.
Starten Sie vsftpd neu, indem Sie Folgendes eingeben:
> Sudo /etc/init.d/vsftpd restart
Sie sollten eine Nachricht sehen, die wie folgt aussieht:
Wenn dies nicht funktioniert, versuchen Sie Folgendes:
> Sudo /sbin/service vsftpd restart
Wenn Sie einen Blick auf/etc/vsftpd/user_list werfen, sehen Sie Folgendes:
# 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
Dies bedeutet im Wesentlichen: "Diesen Benutzern keinen FTP-Zugriff erlauben." vsftpd ermöglicht den FTP-Zugriff für alle Benutzer, die nicht in dieser Liste aufgeführt sind.
Um ein neues FTP-Konto zu erstellen, müssen Sie möglicherweise einen neuen Benutzer auf Ihrem Server erstellen. (Wenn Sie bereits ein Benutzerkonto haben, das nicht in/etc/vsftpd/user_list aufgeführt ist, können Sie mit dem nächsten Schritt fortfahren.)
Das Erstellen eines neuen Benutzers in einer EC2-Instanz ist ziemlich einfach. Um beispielsweise den Benutzer 'bret' zu erstellen, geben Sie Folgendes ein:
> Sudo adduser bret
> Sudo passwd bret
So wird es aussehen:
Zu diesem Zeitpunkt sind Ihre FTP-Benutzer nicht auf ihre Basisverzeichnisse beschränkt. Das ist nicht sehr sicher, aber wir können es ziemlich leicht beheben.
Bearbeiten Sie Ihre vsftpd-conf-Datei erneut, indem Sie Folgendes eingeben:
> Sudo vi /etc/vsftpd/vsftpd.conf
Kommentar aus der Zeile auskommentieren:
chroot_local_user=YES
Es sollte so aussehen, wenn Sie fertig sind:
Starten Sie den vsftpd-Server erneut wie folgt:
> Sudo /etc/init.d/vsftpd restart
Alles erledigt!
vsftpd wird beim Booten Ihres Servers nicht automatisch gestartet. Wenn Sie wie ich sind, bedeutet dies, dass Sie nach dem Neustart Ihrer EC2-Instanz einen Moment des Schreckens verspüren, wenn FTP beschädigt zu sein scheint - aber in Wirklichkeit läuft es einfach nicht! Hier ist eine praktische Möglichkeit, das zu beheben:
> Sudo chkconfig --level 345 vsftpd on
Wenn Sie redhat verwenden, können Sie Ihre Dienste alternativ auch über diese grafische Benutzeroberfläche verwalten, um zu steuern, welche Dienste automatisch gestartet werden sollen:
> Sudo ntsysv
Jetzt startet vsftpd automatisch, wenn der Server hochfährt.
* HINWEIS: Iman Sedighi hat eine elegantere Lösung veröffentlicht, um den Zugriff von Benutzern auf ein bestimmtes Verzeichnis zu beschränken. Bitte beziehen Sie sich auf seine ausgezeichnete Lösung als Antwort *
Möglicherweise möchten Sie einen Benutzer erstellen und seinen FTP-Zugriff auf einen bestimmten Ordner beschränken, z. B./var/www. Dazu müssen Sie das Standardverzeichnis des Benutzers ändern:
> Sudo usermod -d /var/www/ username
In diesem speziellen Beispiel wird dem Benutzer normalerweise die Berechtigung für die Gruppe "www" erteilt, die häufig mit dem Ordner/var/www verknüpft ist:
> Sudo usermod -a -G www username
Um passives FTP auf einem EC2-Server zu aktivieren, müssen Sie die Ports konfigurieren, die Ihr FTP-Server für eingehende Verbindungen verwenden soll, und dann eine Liste der verfügbaren Ports für die FTP-Client-Datenverbindungen öffnen.
Ich kenne mich mit Linux nicht aus, aber die Befehle, die Sie bereitgestellt haben, sind die Schritte zum Installieren des FTP-Servers, zum Konfigurieren der Regeln für die ec2-Firewall (über die AWS-API) und anschließend zum Konfigurieren des FTP-Servers für die Verwendung der Ports, die für die ec2-Firewall zugelassen sind .
Dieser Schritt installiert also den FTP-Client (VSFTP).
> yum install vsftpd
Diese Schritte konfigurieren den FTP-Client
> 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
die anderen beiden Schritte lassen sich jedoch leichter über die Amazon-Konsole in den EC2-Sicherheitsgruppen erledigen. Dort müssen Sie die Sicherheitsgruppe konfigurieren, die Ihrem Server zugewiesen ist, um Verbindungen an den Ports 20,21 und 1024-1048 zuzulassen
Danke @ clone45 für die Nice-Lösung. Aber ich hatte nur ein wichtiges Problem mit Anhang B seiner Lösung. Unmittelbar nachdem ich das Basisverzeichnis in var/www/html geändert habe, konnte ich keine Verbindung zum Server über ssh und sftp herstellen, da es immer folgende Fehler anzeigt
permission denied (public key)
oder in FileZilla habe ich diesen Fehler erhalten:
No supported authentication methods available (server: public key)
Ich könnte aber über eine normale FTP-Verbindung auf den Server zugreifen.
Wenn Sie denselben Fehler festgestellt haben, machen Sie einfach den Anhang b der @ clone45-Lösung rückgängig, indem Sie das Standardverzeichnis für den Benutzer festlegen:
Sudo usermod -d /home/username/ username
Wenn Sie jedoch das Standardverzeichnis des Benutzers festlegen, hat der Benutzer Zugriff auf viele andere Ordner außerhalb von/var/www/http. Um Ihren Server abzusichern, folgen Sie diesen Schritten:
1- Sftponly-Gruppe erstellen Erstellen Sie eine Gruppe für alle Benutzer, deren Zugriff auf den Zugriff auf ftp und sftp auf var/www/html beschränkt werden soll. um die Gruppe zu bilden:
Sudo groupadd sftponly
2- Jail the chroot Um den Zugriff dieser Gruppe auf den Server über sftp zu beschränken, müssen Sie die chroot-Datei blockieren, damit die Benutzer der Gruppe keinen Zugriff auf einen Ordner außer dem html-Ordner in ihrem Home-Verzeichnis haben. Öffnen Sie dazu /etc/ssh/sshd.config in der vim mit Sudo . Am Ende der Datei kommentieren Sie bitte diese Zeile:
Subsystem sftp /usr/libexec/openssh/sftp-server
Und dann füge diese Zeile darunter hinzu:
Subsystem sftp internal-sftp
Also haben wir das Subsystem durch internal-sftp ersetzt. Fügen Sie dann folgende Zeilen darunter hinzu:
Match Group sftponly
ChrootDirectory /var/www
ForceCommand internal-sftp
AllowTcpForwarding no
Nachdem ich diese Zeile hinzugefügt hatte, speicherte ich meine Änderungen und starte dann den ssh-Dienst neu:
Sudo service sshd restart
3- Hinzufügen des Benutzers zur Gruppe sftponly Jeder Benutzer, dessen Zugriff eingeschränkt werden soll, muss Mitglied der Gruppe sftponly sein. Deshalb schließen wir uns zu sftponly durch: Sudo usermod -G Sftponly username
4- Beschränken Sie den Benutzerzugriff auf nur var/www/html Um den Benutzerzugriff auf den Ordner var/www/html zu beschränken, müssen Sie ein Verzeichnis im Heimatverzeichnis (mit dem Namen 'html') von erstellen diesen Benutzer und mounten Sie/var/www in/home/username/html wie folgt:
Sudo mkdir /home/username/html
Sudo mount --bind /var/www /home/username/html
5- Schreibzugriff einstellen Wenn der Benutzer Schreibzugriff auf/var/www/html benötigt, müssen Sie den Benutzer unter/var/www sperren, das über root: root-Besitzrechte und Berechtigungen von 755 verfügen muss Dann müssen Sie/var/www/html den Besitz von root: sftponly und die Berechtigungen von 775 geben, indem Sie die folgenden Zeilen hinzufügen:
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- Shell-Zugriff blockieren Wenn Sie den Zugriff auf Shell beschränken möchten, um die Sicherheit zu erhöhen, ändern Sie die Standard-Shell wie folgt in bin/false:
Sudo usermod -s /bin/false username
Großartiger Artikel ... funktionierte unter Amazon Linux AMI wie ein Kinderspiel.
Zwei weitere nützliche Befehle:
So ändern Sie den Standard-FTP-Uploadordner
Schritt 1:
edit /etc/vsftpd/vsftpd.conf
Schritt 2: Erstellen Sie einen neuen Eintrag am unteren Rand der Seite:
local_root=/var/www/html
Zum Anwenden der Lese-, Schreib- und Löschberechtigung für die Dateien unter dem Ordner, sodass Sie sie mit einem FTP-Gerät verwalten können
find /var/www/html -type d -exec chmod 777 {} \;
Falls Sie ufw aktiviert haben, vergessen Sie nicht, ftp hinzuzufügen:
> Sudo ufw allow ftp
Ich habe 2 Tage gebraucht, um zu realisieren, dass ich ufw aktiviert habe.
Es wird nicht in Ordnung sein, bis Sie Ihren Benutzer mit den folgenden Befehlen zur Gruppe www hinzufügen:
Sudo usermod -a -G www <USER>
Dies löst das Berechtigungsproblem.
Legen Sie den Standardpfad fest, indem Sie Folgendes hinzufügen:
local_root=/var/www/html
Vergessen Sie nicht, Ihre iptables-Firewall zu aktualisieren, wenn Sie die Bereiche 20-21 und 1024-1048 zulassen.
Tun Sie dies aus/etc/sysconfig/iptables
Zeilen wie diese hinzufügen:
-EINGANG -m Zustand - Zustand NEU -m Tcp -p Tcp -dport 20:21 -j ACCEPT
-Ein Zustand INPUT -m - state NEU -m TCP -P TCP -dport 1024: 1048 -j ACCEPT
Und starten Sie iptables erneut mit dem Befehl:
Sudo-Dienst iptables neu starten
Ich habe clone45 Schritte vereinfacht:
Öffnen Sie die Ports wie er erwähnt hat
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
Ich habe clone45s Antwort bis zum Ende verfolgt. Ein toller Artikel! Da ich den FTP-Zugriff für die Installation von Plug-Ins auf einer meiner Wordpress-Sites benötigte, habe ich das Home-Verzeichnis in/var/www/mysitename geändert. Dann fügte ich fort, meinen FTP-Benutzer wie folgt zu der Apache-Gruppe (oder WWW-Gruppe) hinzuzufügen:
Sudo usermod -a -G Apache myftpuser
Danach sah ich immer noch diesen Fehler auf der WP-Plugin-Installationsseite: "WordPress-Inhaltsverzeichnis (WP-Inhalt) kann nicht gefunden werden". Diese Lösung wurde in einer wp.org - F & A - Sitzung gesucht und gefunden: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content und fügte der folgenden Datei Folgendes hinzu: Ende von wp-config.php:
if(is_admin()) {
add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
define( 'FS_CHMOD_DIR', 0751 );
}
Danach wurde mein WP Plugin erfolgreich installiert.
Falls Sie ein falsches 530-Passwort erhalten
1 weiterer Schritt erforderlich
in der Datei/etc/shells
Fügen Sie die folgende Zeile hinzu
/ bin/false
vielleicht erwähnenswert, zusätzlich zu clone45 s Antwort:
Schreibberechtigungen für chrooted FTP-Benutzer in vsftpd behoben
Die vsftpd-Version, die mit Ubuntu 12.04 Precise geliefert wird, hat keine Erlauben Sie chrootierten lokalen Benutzern, standardmäßig zu schreiben. Standardmäßig werden Sie haben dies in /etc/vsftpd.conf:
chroot_local_user=YES write_enable=YES
Damit lokale Benutzer schreiben können, müssen Sie den folgenden Parameter hinzufügen:
allow_writeable_chroot=YES
Hinweis: Probleme mit Schreibberechtigungen werden möglicherweise als FileZilla-Fehler angezeigt:
Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Could not connect to server
Verweise:
Schreibberechtigungen für chrooted FTP-Benutzer in vsftpd korrigiert
VSFTPd funktioniert nicht mehr nach Update