Was ist SFTP?
SFTP steht für SSH File Transfer Protocol. Du hast es richtig erraten. Es ist eine Version von FTP, die zusätzlich SSH verwendet. Es ermöglicht Benutzern das Hoch- und Herunterladen von Dateien zu und von einem Linux-Server über eine verschlüsselte Verbindung. FTP macht dasselbe ohne Verschlüsselung und deshalb wird SFTP heutzutage gegenüber FTP bevorzugt.
Sehen wir uns an, wie Sie einen SFTP-Server auf einem Linux-System einrichten können.
Einrichten des SFTP-Servers unter Linux
Ich habe Ubuntu in diesem Tutorial verwendet. Die Installationsbefehle sind spezifisch für Ubuntu und Debian, aber die restlichen Schritte können in jeder anderen Linux-Distribution befolgt werden.
Um die Schritte auszuführen, benötigen Sie sudoer-Rechte. Wenn Sie also keine sudo-Rechte haben, wenden Sie sich an Ihren Systemadministrator. Wenn Sie derjenige sind, lesen Sie bitte über das Erstellen eines sudo-Benutzers in Ubuntu.
Die Einrichtung von SFTP ist sehr einfach. Bevor Sie dazu gehen, müssen Sie OpenSSH auf der Serverseite und das SSH-Paket auf der Clientseite installiert haben.
Ich habe die Einrichtung von SSH unter Ubuntu ausführlich in einem separaten Artikel besprochen, ich erwähne hier nur die wichtigen Schritte.
Um OpenSSH auf dem Server zu installieren, können Sie den folgenden Befehl verwenden:
sudo apt install openssh-server
Sie benötigen außerdem SSH auf dem System, von dem aus Sie auf den SFTP-Server zugreifen möchten.
sudo apt install ssh
Danach haben Sie alles bereit, um SFTP einzurichten. Es ist in drei Schritten erledigt und ich werde es Ihnen einen nach dem anderen zeigen.
Schritt 1:Gruppen, Benutzer, Verzeichnisse erstellen
Zur Verwendung von SFTP (oder jeden anderen Dienst im Allgemeinen) sicher ist, ist es am besten, Gruppen und Benutzer zu erstellen, um diesen Dienst und nur diesen Dienst zu verwenden. „Es ist am besten, einem bestimmten Unternehmen ein bestimmtes Recht zu geben“ .
Falls Sie SFTP-Zugriff und auch normalen Systemzugriff gewähren möchten, erstellen Sie Benutzer so, dass sie leicht nach Dienst identifiziert werden können. Wenn beispielsweise seeni Für den normalen Systemzugriff wird dann seenisftp verwendet kann für den SFTP-Zugriff verwendet werden. Die Verwendung dieser Methode ist für die Administration einfacher.
Lassen Sie uns eine Gruppe mit dem Namen „sftpg“ erstellen ” mit dem groupadd-Befehl:
sudo groupadd sftpg
Lassen Sie uns einen Benutzer namens „seenisftp“ erstellen und fügen Sie ihn der obigen Gruppe hinzu und geben Sie ihm ein Passwort.
sudo useradd -g sftpg seenisftp
sudo passwd seenisftp
Im useradd-Befehl -g Option teilt der Gruppe mit, welcher Benutzer hinzugefügt werden soll. Sie können alle Benutzer in Linux auflisten und überprüfen, ob der neue Benutzer hinzugefügt wurde.
Nehmen wir an, Sie möchten das Verzeichnis /data/ verwenden als Root für sftp und /data/USERNAME für jeden Benutzer. Wenn sich Benutzer also über sftp anmelden, sollten sie sich in /data/USERNAME befinden als ihr Standardverzeichnis (genauso wie Sie sich in /home/USERNAME befinden Verzeichnis, wenn Sie sich über SSH beim Linux-System anmelden). Nehmen Sie außerdem an, dass sie Dateien aus diesem Verzeichnis lesen, aber nur auf Uploads hochladen können Verzeichnis.
Lassen Sie uns die Verzeichnisse erstellen und ihren Zugriff und Besitz wie folgt ändern (lesen Sie über Dateiberechtigungen in Linux, um mehr darüber zu erfahren).
sudo mkdir -p /data/seenisftp/upload
sudo chown -R root.sftpg /data/seenisftp
sudo chown -R seenisftp.sftpg /data/seenisftp/upload
Eine Sache, die verwirren könnte, ist, dem Root selbst den Besitz des Benutzerverzeichnisses zu geben. Dies ist für das Chrooting in SFTP obligatorisch. Stellen Sie also sicher, dass der Eigentümer von /data/USERNAME ist root .
Ab sofort haben wir den Benutzer namens seenisftp mit der Gruppe sftpg und mit Zugriffsberechtigungen für /data/seenisftp .
Schritt 2:Konfigurieren Sie sshd_config
Als nächstes müssen Sie den ssh-Server so konfigurieren, dass er/sie jedes Mal, wenn sich ein Benutzer, der zur sftpg-Gruppe gehört, anmeldet, zu sftp gelangt statt der normalen Shell kommt man über ssh. Hängen Sie das folgende Snippet an /etc/ssh/sshd_config
an falls noch nicht vorhanden.
Match Group sftpg
ChrootDirectory /data/%u
ForceCommand internal-sftp
Im obigen Snippet ermöglicht ChrootDirectory, dass das angegebene Verzeichnis als Stammknoten („/“ Verzeichnis ) im Verzeichnisbaum erstellt wird. Der angemeldete Benutzer kann oberhalb dieses Verzeichnisses nichts sehen. Dadurch wird verhindert, dass der aktuelle Benutzer über sftp auf die Dateien anderer Benutzer zugreift . %u ist der Escape-Code zum Füllen mit dem aktuellen Benutzernamen zum Zeitpunkt der Anmeldung. Wenn seenisftp Anmeldungen über sftp , er befindet sich in /data/seenisftp als sein Stammverzeichnis. Er wird darüber nichts sehen können.
Schritt 3:Dienst neu starten
Um Änderungen vorzunehmen, haben wir sshd_config vorgenommen live, starten Sie den Dienst wie folgt neu.
sudo systemctl restart sshd
Zugriff auf SFTP über die Linux-Befehlszeile
Sie können sich bei SFTP anmelden, wie Sie es normalerweise mit SSH tun würden.
sftp [email protected]
Beispiele für SFTP-Befehle
SFTP-Befehle haben normalerweise das folgende Format.
COMMAND [SOURCE] [DESTINATION]
Für jeden Befehl können Argumente entweder lokale Systempfade oder entfernte Systempfade sein. Es gibt keinen spezifischen sichtbaren Unterschied zwischen ihnen. Sie können den Pfad wie gewohnt angeben, nachdem Sie berücksichtigt haben, ob das Argument lokal oder entfernt ist.
GET – Herunterladen von Inhalten vom Remote-Server auf das lokale System. Der folgende Befehl lädt die Remote-Datei poster.img herunter zu ~/Pictures des lokalen Systems Verzeichnis.
GET poster.img ~/Pictures
PUT – Inhalte vom lokalen System auf das entfernte System hochladen. Der folgende Befehl lädt ~/Pictures/poster2.jpg hoch in meine Uploads Verzeichnis.
PUT ~/Pictures/poster2.jpg uploads/
RM – Zum Entfernen der Dateien im Remote-System. Dies ist rm sehr ähnlich Befehl. Sie können den folgenden Befehl sehen, der ein Bild unter uploads/poster3.jpg löscht
RM uploads/poster3.jpg
Die oben genannten Befehle sind sehr einfach und reichen aus, um den FTP/SFTP-Server zu erkunden. Wenn Sie mehr wissen möchten, verwenden Sie entweder help
Befehl oder verwenden Sie diese Ressource.
Ich hoffe, dieser Artikel hat Ihnen beim Einrichten des SFTP-Servers unter Linux geholfen.
Teilen Sie uns in Kommentaren mit, wie Ihr SFTP-Dateisystem eingerichtet ist. Ist es wie in diesem Artikel erwähnt oder ein gepooltes Verzeichnis oder etwas anderes?
Wenn Sie diesen Artikel nützlich fanden, teilen Sie ihn mit Ihren Freunden. Wenn Sie Vorschläge haben, können Sie diese gerne unten hinterlassen.