Gruppe und Benutzer erstellen
In diesem Schritt erstellst du eine neue Gruppe und einen neuen Benutzer für den SFTP-Server. Die Benutzer dieser Gruppe können auf den SFTP-Server zugreifen. Aus Sicherheitsgründen können SFTP-Benutzer nicht auf den SSH-Dienst zugreifen. SFTP-Benutzer haben nur Zugriff auf den SFTP-Server.
1. Führe den folgenden Befehl aus, um eine neue Gruppe
„sftpgroup“ zu erstellen.
sudo groupadd sftpgroup
2. Erstelle einen neuen Benutzer
„sftpuser“ mit dem folgenden Befehl.
sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser
Detaillierte Optionen:
- -G: fügt den Benutzer automatisch zur„sftpgroup“ hinzu.
- -d: gib das Heimatverzeichnis für den neuen Benutzer an.
- -s: Setze den Standard für den neuen Benutzer auf„/sbin/nologin„, was bedeutet, dass der Benutzer keinen Zugriff auf den SSH-Server hat.
3. Als Nächstes erstellst du das Passwort für den Benutzer
„sftpuser“ mit dem folgenden Befehl.
passwd sftpuser
Gib dein sicheres Passwort ein und wiederhole es, dann bestätige es mit
„Enter„.
Du musst angemeldet sein, um Bilder zu sehen.
Um weitere Benutzer hinzuzufügen, wiederholst du die Schritte
2 und 3. Wichtig ist, dass alle SFTP-Benutzer in der Gruppe
„sftpgroup“ sind und keinen Shell-Zugang über SSH haben.
Chroot-Gefängnisverzeichnis einrichten
Nachdem du eine neue Gruppe und einen neuen Benutzer angelegt hast, musst du das Chroot-Verzeichnis für die SFTP-Benutzer erstellen und konfigurieren.
1. Für den Benutzer „sftpuser“ wird das neue Heimatverzeichnis
„/srv/sftpuser“ sein. Führe den folgenden Befehl aus, um es zu erstellen.
mkdir -p /srv/sftpuser
2. Um chroot für den Benutzer
„sftpuser“ einzurichten, musst du die Eigentümerschaft des Verzeichnisses auf den Benutzer „root“ ändern, aber der Gruppe weiterhin Lese- und Ausführungsrechte ohne Schreibrechte einräumen.
Ändere die Eigentümerschaft des Verzeichnisses mit folgendem Befehl auf den Benutzer „root“.
sudo chown root /srv/sftpuser
Gib der Gruppe die Berechtigung zum Lesen und Ausführen, aber nicht zum Schreiben.
sudo chmod g+rx /srv/sftpuser
3. Als Nächstes erstellst du ein neues Verzeichnis „data“ innerhalb des Verzeichnisses
„/srv/sftpuser“ und änderst den Besitzer dieses Verzeichnisses auf den Benutzer
„sftpuser„.
mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data
Du musst angemeldet sein, um Bilder zu sehen.
Im Folgenden wird die Konfiguration für das SFTP-Benutzerverzeichnis beschrieben.
- Das Verzeichnis„/srv/sftuser“ ist das Standard-Home-Verzeichnis.
- Der Benutzer„sftpuser“ kann nicht in das Verzeichnis„/srv/sftpuser“ schreiben, aber er kann in diesem Verzeichnis lesen.
- Der Benutzer„sftpuser“ kann Dateien auf den SFTP-Server in das Verzeichnis„/srv/sftpuser/data“ hochladen.
Aktivieren von SFTP auf dem SSH-Server
Um den SFTP-Server auf OpenSSH zu aktivieren, musst du die SSH-Konfiguration „/etc/ssh/sshd_config“ bearbeiten.
1. Bearbeite die ssh-Konfiguration
„/etc/ssh/sshd_config“ mit nano oder vim.
sudo nano /etc/ssh/sshd_config
2.
Kommentiere die folgende Konfiguration, um die eigenständige Funktion
„sftp-server“ zu deaktivieren.
#Subsystem sftp /usr/lib/openssh/sftp-server
3. Füge die folgende Konfiguration am Ende der Zeile ein.
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory %h
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftp
Speichere die Konfiguration und beende sie.
Detaillierte Konfiguration:
- Statt des Unterprozesses„sftp-server“ verwenden wir den„internal-sftp„.
- Der SFTP-Server wird für die Gruppe„sftpgroup“ aktiviert.
4. Um eine neue Konfiguration anzuwenden, starte den ssh-Dienst mit dem unten stehenden Befehl neu.
sudo systemctl restart sshd
Der SFTP-Server ist bereit und erreichbar und läuft auf demselben Port wie der SSH-Dienst.
Zugriff auf den SFTP-Server
Auf der Client-Seite werden wir die sftp-Befehlszeile verwenden, die bei den meisten Linux-Distributionen standardmäßig installiert ist. Du kannst aber auch einen anderen Kommandozeilen-Client oder einen GUI-FTP-Client wie
FileZilla,
Cyberduck usw. verwenden.
1. Um dich mit dem SFTP-Server zu verbinden, führe den Befehl sftp wie folgt aus.
sftp ftpuser@SERVER-IP
Wenn dein SFTP- und/oder SSH-Server auf einem benutzerdefinierten Port läuft, kannst du den sftp-Befehl wie folgt verwenden.
sftp -P PORT ftpuser@SERVER-IP
Gib das Passwort für den
„sftpuser“ ein.
2. Sobald du mit dem SFTP-Server verbunden bist, führe den folgenden Befehl aus.
Zeigt den aktuellen Pfad zum Arbeitsverzeichnis an und listet alle verfügbaren Dateien und Verzeichnisse auf.
pwd
ls
Du musst angemeldet sein, um Bilder zu sehen.
3. Lade eine lokale Datei auf den SFTP-Server hoch, und zwar in das Verzeichnis
‚/‚, was als ‚
Berechtigung verweigert‚, weil es das chroot-Verzeichnis ist.
put /path/to/file/on/local /
4. Lade eine lokale Datei in das Verzeichnis
‚/data/‚ auf dem SFTP-Server hoch. Wenn deine Konfiguration korrekt ist, wird deine Datei in das Verzeichnis
„/data/“ hochgeladen.
put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/
Du musst angemeldet sein, um Bilder zu sehen.
5. Überprüfe nun die verfügbaren Dateien im Verzeichnis
„/data“ mit dem folgenden Befehl.
ls /data/
Du wirst sehen, dass deine Datei auf den SFTP-Server hochgeladen wurde.
Du musst angemeldet sein, um Bilder zu sehen.