GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren und verwenden Sie SFTP auf Linux-Servern

SFTP oder SSH File Transfer Protocol ist eine Methode zum sicheren Übertragen von Daten zwischen zwei Computern und mehr. Es ist FTP, das auf dem SSH-Protokoll läuft und dessen Sicherheit nutzt und seine Authentifizierung vollständig unterstützt.

Heutzutage wird empfohlen, SFTP anstelle des alten FTP- oder FTP/S-Protokolls zu verwenden. SFTP ist standardmäßig sicher, da SSH so funktioniert. Aus Sicherheitssicht schützt Sie SFTP auch vor Passwort-Sniffing und Man-in-the-Middle-Angriffen (MiTM).

Genau wie SSH schützt auch SFTP Ihre Datenintegrität mithilfe der Verschlüsselungs- und kryptografischen Hash-Funktion. Außerdem unterstützt es mehrere sichere Authentifizierungsmethoden, einschließlich passwort- und schlüsselbasierter Authentifizierung. Außerdem reduziert es den offenen Port des Servers zum externen Netzwerk, da es auf demselben Port wie das SSH-Protokoll ausgeführt wird.

Voraussetzungen

In dieser Anleitung erfahren Sie, wie Sie einen SFTP-Server auf einem Linux-System einrichten. Außerdem lernen Sie die grundlegenden Befehle des sftp-Clients kennen.

Unten ist die aktuelle Umgebung für die Implementierung:

  • Ein Linux-Server – Sie können Debian, Ubuntu, CentOS, Fedora, Rocky oder jede andere Linux-Distribution verwenden.
  • Stellen Sie sicher, dass OpenSSH-Pakete auf Ihrem Linux-System verfügbar sind.
  • SFTP-Client - sftp-Befehlszeile oder ein beliebiger GUI-Client, wie Sie es bevorzugen.

OpenSSH-Pakete verifizieren

Um einen SFTP-Server einzurichten, müssen Sie OpenSSH-Pakete auf Ihrem Linux-System installiert haben. Auf fast allen Linux-Distributionsservern sind die OpenSSH-Pakete standardmäßig installiert. Aber falls Sie das OpenSSH-Paket nicht auf Ihrem System haben, können Sie es aus dem offiziellen Repository installieren.

1. Um sicherzustellen, dass OpenSSH-Pakete auf Ihrem Linux-System installiert sind, verwenden Sie den folgenden Befehl.

Für Debian- oder Ubuntu-Server können Sie den folgenden dpkg-Befehl verwenden.

dpkg -l | grep ssh

Unten ist die Ausgabe unseres Debian-Systems.

ii  libssh2-1:amd64               1.9.0-2                        amd64        SSH2 client-side library
ii  openssh-client                1:8.4p1-5                      amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                1:8.4p1-5                      amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server           1:8.4p1-5                      amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines

Die erste Spalte „ii ' bedeutet, dass das Paket installiert ist. Das Paket 'openssh-sftp-server ' ist auf dem Debian/Ubuntu-System installiert.

Benutzer von RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux können den Befehl rpm wie folgt verwenden.

rpm -qa | grep ssh

Gruppe und Benutzer erstellen

In diesem Schritt erstellen Sie eine neue Gruppe und einen neuen Benutzer für den SFTP-Server. Benutzer innerhalb dieser Gruppe dürfen auf den SFTP-Server zugreifen. Und aus Sicherheitsgründen können SFTP-Benutzer nicht auf den SSH-Dienst zugreifen. SFTP-Benutzer greifen nur auf den SFTP-Server zu.

1. Führen Sie den folgenden Befehl aus, um eine neue Gruppe „sftpgroup“ zu erstellen '.

sudo groupadd sftpgroup

2. Erstellen Sie einen neuen Benutzer 'sftpuser ' mit dem folgenden Befehl.

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Detaillierte Optionen:

  • -G :Benutzer automatisch zur 'sftpgroup hinzufügen '.
  • -d :Geben Sie das Home-Verzeichnis für den neuen Benutzer an.
  • -s :Setzen Sie den Standardwert für den neuen Benutzer auf „/sbin/nologin ', was bedeutet, dass der Benutzer nicht kann Zugriff auf den SSH-Server.

3. Als nächstes erstellen Sie das Passwort für den Benutzer 'sftpuser ' mit dem folgenden Befehl.

passwd sftpuser

Geben Sie Ihr starkes Passwort ein und wiederholen Sie es, und drücken Sie dann die Eingabetaste ' zu bestätigen.

Um weitere Nutzer hinzuzufügen, wiederholen Sie die Schritte 2 und 3, und vor allem müssen alle SFTP-Benutzer in der Gruppe 'sftpgroup sein ' ohne Shell-Zugriff über SSH.

Chroot Jail-Verzeichnis einrichten

Nachdem Sie eine neue Gruppe und einen neuen Benutzer erstellt haben, müssen Sie das Chroot-Verzeichnis für SFTP-Benutzer erstellen und konfigurieren.

1. Für den Benutzer „sftpuser“ befindet sich das neue Home-Verzeichnis unter „/srv/sftpuser“ . Führen Sie den folgenden Befehl aus, um es zu erstellen.

mkdir -p /srv/sftpuser

2. Um Chroot für den Benutzer 'sftpuser einzurichten ' müssen Sie den Besitz des Verzeichnisses auf den Benutzer root ändern, aber die Gruppe zum Lesen und Ausführen ohne Schreibzugriff beibehalten.

Ändern Sie den Eigentümer des Verzeichnisses mit dem folgenden Befehl auf den Benutzer „root“.

sudo chown root /srv/sftpuser

Geben Sie der Gruppe die Berechtigung zum Lesen und Ausführen, aber nicht zum Schreiben.

sudo chmod g+rx /srv/sftpuser

3. Als nächstes erstellen Sie ein neues ‚data‘-Verzeichnis innerhalb des ‚/srv/sftpuser '-Verzeichnis und ändern Sie den Besitz dieser 'Daten ' Verzeichnis an den Benutzer 'sftpuser '.

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

Bis hierher, unten detailliert die Konfiguration für das SFTP-Benutzerverzeichnis.

  • Das Verzeichnis '/srv/sftuser' ist das Standard-Home-Verzeichnis.
  • Der Benutzer 'sftpuser ' kann nicht in das Verzeichnis '/srv/sftpuser schreiben ', kann aber in diesem Verzeichnis lesen.
  • Der Benutzer 'sftpuser ' kann Dateien auf den SFTP-Server in das Verzeichnis '/srv/sftpuser/data hochladen '.

SFTP auf SSH-Server aktivieren

Um den SFTP-Server auf OpenSSH zu aktivieren, müssen Sie die SSH-Konfiguration „/etc/ssh/sshd_config“ bearbeiten.

1. Bearbeiten Sie die SSH-Konfiguration '/etc/ssh/sshd_config ' mit nano oder vim.

sudo nano /etc/ssh/sshd_config

2. Kommentar die folgende Konfiguration, um den eigenständigen 'sftp-server zu deaktivieren '-Funktion.

#Subsystem      sftp    /usr/lib/openssh/sftp-server

3. Fügen Sie die folgende Konfiguration am Ende der Zeile ein.

Subsystem sftp internal-sftp

Match Group sftpgroup
     ChrootDirectory %h
     X11Forwarding no
     AllowTCPForwarding no
     ForceCommand internal-sftp

Speichern Sie die Konfiguration und beenden Sie.

Detaillierte Konfiguration:

  • Statt den Unterprozess 'sftp-server zu verwenden ' verwenden wir das 'internal-sftp '.
  • Der für die Gruppe 'sftpgroup aktivierte SFTP-Server '.

4. Um eine neue Konfiguration anzuwenden, starten Sie den ssh-Dienst mit dem folgenden Befehl neu.

sudo systemctl restart sshd

Der SFTP-Server ist bereit und zugänglich und läuft auf demselben Port wie der SSH-Dienst.

Greifen Sie auf den SFTP-Server zu

Auf der Clientseite verwenden wir die sftp-Befehlszeile, die standardmäßig auf den meisten Linux-Distributionen installiert ist. Sie können aber auch einen anderen Befehlszeilen-Client oder GUI-FTP-Client wie FileZilla verwenden , Cyberduck usw.

1. Um eine Verbindung zum SFTP-Server herzustellen, führen Sie den sftp-Befehl wie folgt aus.

sftp [email protected]

Wenn Ihr SFTP- und/oder SSH-Server auf dem benutzerdefinierten Port läuft, können Sie den sftp-Befehl wie unten verwenden.

sftp -P PORT [email protected]

Geben Sie das Passwort für den 'sftpuser ein '.

2. Sobald Sie mit dem SFTP-Server verbunden sind, führen Sie den folgenden Befehl aus.

Aktuellen Pfad Arbeitsverzeichnis anzeigen und alle verfügbaren Dateien und Verzeichnisse auflisten.

pwd
ls

3. Laden Sie eine lokale Datei auf den SFTP-Server in das Verzeichnis '/ hoch ', was zu 'Berechtigung verweigert führt ', weil es das Chroot-Verzeichnis ist.

put /path/to/file/on/local /

4. Laden Sie eine lokale Datei in das Verzeichnis '/data/ hoch ' auf dem SFTP-Server. Wenn Ihre Konfiguration korrekt ist, wird Ihre Datei in den Ordner „/data/ hochgeladen ' Verzeichnis.

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/

5. Überprüfen Sie nun die verfügbaren Dateien auf dem Verzeichnis '/data ' Verzeichnis mit dem folgenden Befehl.

ls /data/

Und Sie sehen, wie Ihre Datei auf den SFTP-Server hochgeladen wird.

Schlussfolgerung

Herzliche Glückwünsche! Sie haben den SFTP-Server erfolgreich auf dem Linux-System konfiguriert. Diese Art der Konfiguration kann auf den meisten Linux-Systemen angewendet werden, auf denen OpenSSH installiert ist. Außerdem haben Sie gelernt, wie Sie das Chroot-Verzeichnis für SFTP-Benutzer einrichten und den grundlegenden sftp-Client-Befehl kennengelernt.


Ubuntu
  1. So installieren und verwenden Sie den Linux-Bildschirm mit Befehlen

  2. So installieren und verwenden Sie Hubot unter Ubuntu Linux

  3. So installieren und verwenden Sie Flatpak unter Linux

  4. So installieren und richten Sie einen sftp-Server in Ubuntu 20.04 ein

  5. So installieren und verwenden Sie Traceroute unter Linux

So installieren und verwenden Sie Ubuntu Linux Screenshot-Tools

So installieren und verwenden Sie WinSCP unter Ubuntu 20.04 Linux

So installieren und verwenden Sie ProtonVPN unter Desktop-Linux

So installieren und verwenden Sie Flatpak unter Linux

So installieren und verwenden Sie die Thonny Python IDE unter Linux

So installieren und verwenden Sie den i3 Window Manager unter Linux