Einrichten von FTP auf Amazon Cloud Server [geschlossen]

257

Ich versuche, FTP auf Amazon Cloud Server einzurichten, aber ohne Glück. Ich suche über das Netz und es gibt keine konkreten Schritte, wie es geht.

Ich habe folgende Befehle zum Ausführen 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.

SharkTheDark
quelle
10
Diese Frage sollte auf serverfault.com migriert werden.
Jérôme Verstrynge

Antworten:

570

Jaminto hat die Frage hervorragend beantwortet, aber ich habe den Prozess kürzlich selbst durchlaufen und wollte Jamintos Antwort erweitern.

Ich gehe davon aus, dass Sie bereits eine EC2-Instanz erstellt und dieser eine elastische IP-Adresse zugeordnet haben.


Schritt 1: Installieren Sie vsftpd

SSH zu Ihrem EC2-Server. Art:

> sudo yum install vsftpd

Dies sollte vsftpd installieren.

Schritt 2: Öffnen Sie die FTP-Ports Ihrer EC2-Instanz

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 Ihrer EC2-Instanz zugewiesene Sicherheitsgruppe aus. Wählen Sie dann die Registerkarte Eingehend und klicken Sie auf Bearbeiten:

Geben Sie hier die Bildbeschreibung ein

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 auf Ihre eigene IP-Adresse festlegen möchten, beachten Sie, dass sich Ihre IP-Adresse möglicherweise ändert, wenn sie über DHCP zugewiesen wird.

Geben Sie hier die Bildbeschreibung ein



Schritt 3: Aktualisieren Sie die Datei vsftpd.conf

Bearbeiten Sie Ihre vsftpd conf-Datei, indem Sie Folgendes eingeben:

> sudo vi /etc/vsftpd/vsftpd.conf

Deaktivieren Sie anonymes 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 ungefähr so ​​aussehen - außer dass Sie die pasv_address durch Ihre öffentlich zugängliche IP-Adresse ersetzen müssen:

Geben Sie hier die Bildbeschreibung ein

Um Änderungen zu speichern, drücken Sie die Esc-Taste, geben Sie ein und drücken Sie :wqdie Eingabetaste.



Schritt 4: Starten Sie vsftpd neu

Starten Sie vsftpd neu, indem Sie Folgendes eingeben:

> sudo /etc/init.d/vsftpd restart

Sie sollten eine Nachricht sehen, die wie folgt aussieht:

Geben Sie hier die Bildbeschreibung ein


Wenn dies nicht funktioniert, versuchen Sie:

> sudo /sbin/service vsftpd restart



Schritt 5: Erstellen Sie einen FTP-Benutzer

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 Grunde: "Erlauben Sie diesen Benutzern keinen FTP-Zugriff." vsftpd ermöglicht jedem Benutzer, der nicht in dieser Liste aufgeführt ist, den FTP-Zugriff.

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 auf einer EC2-Instanz ist ziemlich einfach. Geben Sie beispielsweise Folgendes ein, um den Benutzer 'bret' zu erstellen:

> sudo adduser bret
> sudo passwd bret

So wird es aussehen:

Geben Sie hier die Bildbeschreibung ein



Schritt 6: Beschränken der Benutzer auf ihre Home-Verzeichnisse

Zu diesem Zeitpunkt sind Ihre FTP-Benutzer nicht auf ihre Home-Verzeichnisse beschränkt. Das ist nicht sehr sicher, aber wir können es ziemlich einfach beheben.

Bearbeiten Sie Ihre vsftpd conf-Datei erneut, indem Sie Folgendes eingeben:

> sudo vi /etc/vsftpd/vsftpd.conf

Kommentar aus der Zeile entfernen:

chroot_local_user=YES

Sobald Sie fertig sind, sollte es so aussehen:

Geben Sie hier die Bildbeschreibung ein

Starten Sie den vsftpd-Server erneut wie folgt neu:

> sudo /etc/init.d/vsftpd restart

Alles erledigt!


Anhang A: Überleben eines Neustarts

vsftpd startet nicht automatisch, wenn Ihr Server startet. Wenn Sie wie ich sind, bedeutet dies, dass Sie nach dem Neustart Ihrer EC2-Instanz einen Moment des Terrors verspüren, wenn FTP defekt zu sein scheint - aber in Wirklichkeit läuft es einfach nicht!. Hier ist eine praktische Möglichkeit, dies zu beheben:

> sudo chkconfig --level 345 vsftpd on

Wenn Sie redhat verwenden, können Sie Ihre Dienste auch mithilfe dieser raffinierten grafischen Benutzeroberfläche verwalten, um zu steuern, welche Dienste automatisch gestartet werden sollen:

>  sudo ntsysv

Geben Sie hier die Bildbeschreibung ein

Jetzt wird vsftpd automatisch gestartet, wenn Ihr Server hochfährt.


Anhang B: Ändern des FTP-Ausgangsverzeichnisses eines Benutzers

* HINWEIS: Iman Sedighi hat eine elegantere Lösung zur Einschränkung des Benutzerzugriffs auf ein bestimmtes Verzeichnis veröffentlicht. Bitte beziehen Sie sich auf seine ausgezeichnete Lösung als Antwort *

Möglicherweise möchten Sie einen Benutzer erstellen und dessen FTP-Zugriff auf einen bestimmten Ordner beschränken, z. B. / var / www. Dazu müssen Sie das Standard-Ausgangsverzeichnis des Benutzers ändern:

> sudo usermod -d /var/www/ username

In diesem speziellen Beispiel ist es typisch, dem Benutzer Berechtigungen für die Gruppe 'www' zu erteilen, die häufig dem Ordner / var / www zugeordnet ist:

> sudo usermod -a -G www username
klon45
quelle
3
In step 3nach Zeilen in der Datei hinzufügen, wie ich es retten kann?
Sumit Bijvani
2
ok alles erledigt, wie kann ich mich jetzt mit ftp verbinden?
Sumit Bijvani
7
Hallo Sumit. Vi ist ein kniffliger Editor. Um Ihre Arbeit zu speichern, geben Sie Escape und dann ": wq" (ohne Anführungszeichen) ein und drücken Sie die Eingabetaste. FTP ist schwer zu beantworten, da es auf Ihrem FTP-Client basiert. Wenn ich Zeit habe, werde ich versuchen, meiner Antwort einige Anweisungen zum Einrichten einiger beliebter FTP-Clients beizufügen. Persönlich benutze ich Aptana Studio. In Aptana erstellen Sie eine SFTP-Site und stellen Aptana die Authentifizierungsdatei für den öffentlichen Schlüssel zur Verfügung, die Sie beim Erstellen Ihrer EC2-Instanz erhalten haben. Wenn Sie filezilla verwenden, versuchen Sie es mit pageant.exe. Prost!
Klon45
6
Das ist ausgezeichnet. Sehr deutlich. Vielen Dank.
AC Patrice
11
Eigentlich könnte er mir vielleicht Ehre machen. Er stellte meine Antwort am 13. Januar
Klon45
27

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 anschließend eine Liste der verfügbaren Ports für die FTP-Client-Datenverbindungen öffnen.

Ich bin mit Linux nicht so vertraut, aber die Befehle, die Sie veröffentlicht haben, sind die Schritte zum Installieren des FTP-Servers, zum Konfigurieren der ec2-Firewall-Regeln (über die AWS-API) und zum Konfigurieren des FTP-Servers für die Verwendung der Ports, die Sie für die ec2-Firewall zugelassen haben .

In diesem Schritt wird der FTP-Client (VSFTP) installiert.

> 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 beiden anderen Schritte werden jedoch einfacher über die Amazon-Konsole unter EC2-Sicherheitsgruppen ausgeführt. Dort müssen Sie die Sicherheitsgruppe konfigurieren, die Ihrem Server zugewiesen ist, um Verbindungen an den Ports 20, 21 und 1024 bis 1048 zuzulassen

Jaminto
quelle
Ich weiß, was diese Zeilen bedeuten, aber ich weiß nicht, wo ich sie
eingeben
1
in der Befehlszeile auf dem Server, auf dem Sie den FTP-Server installieren?
Jaminto
2
Stellen
jaminto
Falls Sie immer noch einen Fehler erhalten (500 OOPS: vsftpd: Weigert sich, mit beschreibbarem Root in chroot () zu laufen), wurde das Problem für mich behoben
kaore
Ich bin schockiert, dass anonymes FTP standardmäßig aktiviert ist!
Jeffrey
16

Danke @ clone45 für die nette Lösung. Aber ich hatte nur ein wichtiges Problem mit Anhang b seiner Lösung. Unmittelbar nachdem ich das Home-Verzeichnis in var / www / html geändert hatte, konnte ich über ssh und sftp keine Verbindung zum Server herstellen, da immer die folgenden Fehler angezeigt werden

permission denied (public key)

oder in FileZilla habe ich diesen Fehler erhalten:

No supported authentication methods available (server: public key)

Ich konnte jedoch über eine normale FTP-Verbindung auf den Server zugreifen.

Wenn Sie auf denselben Fehler gestoßen sind, machen Sie einfach den Anhang b der @ clone45-Lösung rückgängig, indem Sie das Standard-Ausgangsverzeichnis für den Benutzer festlegen:

sudo usermod -d /home/username/ username

Wenn Sie jedoch das Standard-Ausgangsverzeichnis des Benutzers festlegen, hat der Benutzer Zugriff auf viele andere Ordner außerhalb von / var / www / http. Führen Sie die folgenden Schritte aus, um Ihren Server zu sichern:

1- Nur sftponly-Gruppe erstellen Erstellen Sie eine Gruppe für alle Benutzer, deren Zugriff nur auf ftp und sftp auf var / www / html beschränkt werden soll. um die Gruppe zu machen:

sudo groupadd sftponly

2- Die Chroot sperren Um den Zugriff dieser Gruppe auf den Server über SFTP einzuschränken, müssen Sie die Chroot ins Gefängnis bringen, damit die Benutzer der Gruppe nicht auf einen Ordner außer dem HTML-Ordner in ihrem Ausgangsverzeichnis zugreifen können. Öffnen Sie dazu /etc/ssh/sshd.config im vim mit sudo. Am Ende der Datei kommentieren Sie bitte diese Zeile:

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

Und fügen Sie dann diese Zeile darunter hinzu:

Subsystem sftp internal-sftp

Also haben wir das Subsystem durch internal-sftp ersetzt. Fügen Sie dann folgende Zeilen hinzu:

 Match Group sftponly
        ChrootDirectory /var/www
        ForceCommand internal-sftp
        AllowTcpForwarding no

Nach dem Hinzufügen dieser Zeile habe ich meine Änderungen gespeichert und dann den SSH-Dienst neu gestartet durch:

sudo service sshd restart

3- Benutzer zur sftponly-Gruppe hinzufügen Jeder Benutzer, dessen Zugriff eingeschränkt werden soll, muss Mitglied der sftponly-Gruppe sein. Deshalb schließen wir uns sftponly an durch: sudo usermod -G sftponly username

4- Beschränken des Benutzerzugriffs auf nur var / www / html Um den Benutzerzugriff auf nur den Ordner var / www / html zu beschränken, müssen Sie ein Verzeichnis im Ausgangsverzeichnis (mit dem Namen 'html') dieses Benutzers erstellen und dann / var einbinden / www to / home / username / html wie folgt:

sudo mkdir /home/username/html
sudo mount --bind /var/www /home/username/html

5- Festlegen des Schreibzugriffs Wenn der Benutzer Schreibzugriff auf / var / www / html benötigt, müssen Sie den Benutzer unter / var / www einsperren, der root: root-Besitz und Berechtigungen von 755 haben muss. Anschließend müssen Sie / var / angeben. www / html Besitz von root: sftponly und Berechtigungen von 775 durch Hinzufügen der folgenden Zeilen:

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- Blockieren des Shell-Zugriffs Wenn Sie den Zugriff auf den Nicht-Zugriff auf die 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
Iman Sedighi
quelle
Auf Ihrem wird sudo mount --bind /var/www /home/username/htmlmir gesagt, dass es keinen WWW-Ordner gibt. Ich gehe davon aus, dass dies vom Stamm aus erfolgt (wo sich der Ordner / home befindet).
Elliotrock
1
sudo chown root:www /var/www/htmlZustände chown: ungültige Gruppe: 'root: www'
Elliotrock
2
Teil 6 sollte besser sudo usermod -s /sbin/nologin usernamewegen der Standard-Shell-Einschränkungen des vsftpd-Pam-Moduls sein (und es scheint in meinem Fall besser zu funktionieren). Und Teil 4 mountmuss bei jedem Neustart durchgeführt werden, daher ist es eine gute Idee, ihn in rc.local zu platzieren.
Phy25
11

Großartiger Artikel ... hat unter Amazon Linux AMI wie ein Kinderspiel funktioniert.

Zwei weitere nützliche Befehle:

So ändern Sie den Standard-FTP-Upload-Ordner

Schritt 1:

edit /etc/vsftpd/vsftpd.conf

Schritt 2: Erstellen Sie einen neuen Eintrag am Ende der Seite:

local_root=/var/www/html

Um Lese-, Schreib- und Löschberechtigungen auf die Dateien im Ordner anzuwenden, können Sie diese mit einem FTP-Gerät verwalten

find /var/www/html -type d -exec chmod 777 {} \;
Ravi Shanker
quelle
11
das chmods jede Datei und Ordner auf 777, was für eine Website nicht sicher ist
sergiogx
OK. Welche Änderung schlagen Sie dazu vor?
Ravi Shanker
3
Sie sollten die erforderlichen Berechtigungen zuweisen, nicht einfach alle Berechtigungen für alles öffnen, oder Sie fragen nach Problemen. Wenn Sie beispielsweise chmod -R ug + rw / var / www / html verwenden, werden allen Dateien Lese- und Schreibberechtigungen für Benutzer und Gruppen erteilt, ohne dass anderen nicht benötigte Ausführungsberechtigungen und Berechtigungen erteilt werden. Richten Sie dann Benutzer und Gruppen entsprechend ein, damit Sie keine anderen ändern müssen. Das ist, wenn Ihr FTP-Benutzer alle Dateien lesen und schreiben kann und Ihr Webserver lesen kann, dass Sie eingestellt sind. Fügen Sie beide Benutzer in dieselbe Gruppe ein und fügen Sie dem Benutzer rw und der Gruppe r hinzu.
AaronM
Sie sollten 775 auf / var / www / html anwenden. Die übrigen Unterordner und Dateien können je nach Bedarf Berechtigungen erhalten. 777 ist sehr unsicher.
Iman Sedighi
6

Wenn Sie ufw aktiviert haben, denken Sie daran, ftp hinzuzufügen:

> sudo ufw allow ftp

Ich habe 2 Tage gebraucht, um festzustellen, dass ich ufw aktiviert habe.

chbong
quelle
oder iptables oder ... ja, ich vergesse auch immer!
Jsh
6

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
user1802434
quelle
4

Vergessen Sie nicht, Ihre iptables-Firewall zu aktualisieren, wenn Sie eine haben, die die Bereiche 20-21 und 1024-1048 zulässt.

Tun Sie dies aus / etc / sysconfig / iptables

Zeilen wie folgt hinzufügen:

-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

Und starten Sie iptables mit dem folgenden Befehl neu:

sudo service iptables neu starten

Kevin Meek
quelle
4

Ich habe die Schritte von clone45 vereinfacht:

Öffnen Sie die Ports wie erwähnt

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
Willem Bressers
quelle
2

Ich folgte der Antwort von clone45 bis zum Ende. Ein toller Artikel! Da ich den FTP-Zugriff benötigte, um Plug-Ins für eine meiner WordPress-Sites zu installieren, habe ich das Home-Verzeichnis in / var / www / mysitename geändert. Dann fügte ich meinen FTP-Benutzer wie folgt zur Apache- (oder WWW-) Gruppe hinzu:

sudo usermod -a -G apache myftpuser

Danach sah ich immer noch diesen Fehler auf der Installationsseite des WP-Plugins: "WordPress-Inhaltsverzeichnis (wp-content) konnte nicht gefunden werden". Diese Lösung wurde in einer Q & A-Sitzung auf wp.org gesucht und gefunden: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content und am Ende von wp- Folgendes hinzugefügt 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.

CodeBrew
quelle
0

Vielleicht zusätzlich zur Antwort von clone45 erwähnenswert :

Korrektur von Schreibberechtigungen für Chrooted-FTP-Benutzer in vsftpd

Die vsftpd-Version, die mit Ubuntu 12.04 Precise geliefert wird, erlaubt chrootierten lokalen Benutzern nicht, standardmäßig zu schreiben. Standardmäßig haben Sie 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 können wie folgt auftreten: FileZilla- Fehler:

Error: GnuTLS error -15: An unexpected TLS packet was received.
Error: Could not connect to server

Referenzen: Das
Korrigieren von Schreibberechtigungen für Chrooted-FTP-Benutzer in vsftpd
VSFTPd funktionierte nach dem Update nicht mehr

Hartmut
quelle
0

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

Varun Bhatia
quelle
-2

FileZila ist ein gutes FTP-Tool zum Einrichten mit Amazon Cloud.

  1. Laden Sie den FileZila-Client von https://filezilla-project.org/ herunter.
  2. Klicken Sie auf Datei -> Site Manager ->
  3. Neue Seite
  4. Geben Sie die IP-Adresse des Hostnamens Ihres Amazon Cloud-Standorts an (Port, falls vorhanden).
  5. Protokoll - SFTP (Kann sich je nach Anforderung ändern)
  6. Anmeldetyp - Normal (Das System fragt also nicht jedes Mal nach dem Passwort.)
  7. Geben Sie Benutzername und Passwort an.
  8. Verbinden.

Sie müssen diesen Schritt nur einmal ausführen. Später werden Inhalte auf dieselbe IP-Adresse und dieselbe Site hochgeladen.

Pratima
quelle