Das File Transfer Protocol ist ein Standardkommunikationsprotokoll, das für die Übertragung von Computerdateien von einem Server zu einem Client in einem Computernetzwerk verwendet wird.
FTP ist heute nicht beliebt, weil es an Sicherheit mangelt. Wenn eine Datei mit diesem Protokoll gesendet wird, werden die Daten, der Benutzername und das Passwort im Klartext geteilt, was bedeutet, dass ein Hacker mit wenig bis gar keinem Aufwand auf diese Informationen zugreifen kann. Damit die Daten sicher sind, müssen Sie eine aktualisierte FTP-Version wie SFTP verwenden.
SFTP Secure File Transfer Protocol ist ein Dateiübertragungsprotokoll, das sicheren Zugriff auf einen Remote-Computer bietet, um sichere Kommunikation zu ermöglichen. Es nutzt SSH – Secure Socket Shell und wird häufig auch als „Secure Shell File Transfer Protocol“ bezeichnet.
Verwandte Inhalte
- Arbeiten mit dem SFTP-Client unter Linux – 10 sftp-Befehle
- So richten Sie einen SFTP-Server auf Debian 11 Server ein
- Dateien vom SFTP-Server mit einem Python-Skript herunterladen
- Auflisten, Hochladen und Herunterladen von Dateien von einem SFTP-Server mit Golang
- So richten Sie einen SFTP-Server auf OpenSUSE Leap 15.3 Server ein
- So installieren und konfigurieren Sie den sftp-Server in Ubuntu 20.04
- So richten Sie einen SFTP-Server auf CentOS 8 /RHEL 8 Server ein
Voraussetzungen
Um dieser Anleitung zu folgen, stellen Sie sicher, dass Sie über Folgendes verfügen:
- Arch-Linux-Maschine
- Root-Zugriff auf den Server oder ein Benutzer mit Root-Zugriff
- Internetzugang vom Server
Inhaltsverzeichnis
- Sicherstellen, dass der Server auf dem neuesten Stand ist
- Sicherstellen, dass der SSH-Dienst installiert ist
- Erstellen von Benutzern und Gruppen und Hinzufügen der erforderlichen Verzeichnisse
- SSH-Dienst konfigurieren
- Überprüfen, ob die Einrichtung wie erwartet funktioniert
1. Sicherstellen, dass der Server auf dem neuesten Stand ist
Bevor Sie fortfahren, stellen Sie sicher, dass Ihr System auf dem neuesten Stand ist. Verwenden Sie diesen Befehl, um die Systempakete zu aktualisieren und zu aktualisieren.
sudo pacman -Syyu
2. Sicherstellen, dass der SSH-Dienst installiert ist
Stellen Sie sicher, dass ssh installiert ist:
$ sudo pacman -Qi openssh
Name : openssh
Version : 8.6p1-1
Description : Premier connectivity tool for remote login with the SSH protocol
Architecture : x86_64
URL : https://www.openssh.com/portable.html
Licenses : custom:BSD
Groups : None
Provides : None
Depends On : glibc krb5 openssl libedit ldns libxcrypt libcrypt.so=2-64 zlib pam
Optional Deps : xorg-xauth: X11 forwarding
x11-ssh-askpass: input passphrase in X
libfido2: FIDO/U2F support
Required By : None
Optional For : None
Conflicts With : None
Replaces : None
Installed Size : 5.79 MiB
Packager : Giancarlo Razzolini <[email protected]>
Build Date : Mon 19 Apr 2021 11:32:46 AM UTC
Install Date : Thu 03 Jun 2021 03:23:32 AM UTC
Install Reason : Explicitly installed
Install Script : Yes
Validated By : Signature
Wenn ssh nicht installiert ist, installieren Sie es mit diesem Befehl:
sudo pacman -S openssh
Nachdem es installiert ist, starten Sie den Dienst
sudo systemctl start sshd
Bestätigen Sie seinen Status
$ sudo systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-12-03 10:19:02 UTC; 17min ago
Main PID: 467 (sshd)
Tasks: 1 (limit: 4606)
Memory: 5.0M
CGroup: /system.slice/sshd.service
└─467 sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups
Dec 04 14:53:30 ip-10-2-40-103 sshd[13109]: Unable to negotiate with 141.98.10.246 port 34078: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:53:42 ip-10-2-40-103 sshd[13111]: Unable to negotiate with 141.98.10.246 port 38674: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:53:53 ip-10-2-40-103 sshd[13115]: Unable to negotiate with 141.98.10.246 port 43268: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:05 ip-10-2-40-103 sshd[13117]: Unable to negotiate with 141.98.10.246 port 47864: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:17 ip-10-2-40-103 sshd[13119]: Unable to negotiate with 141.98.10.246 port 52460: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:41 ip-10-2-40-103 sshd[13123]: Unable to negotiate with 141.98.10.246 port 33418: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:53 ip-10-2-40-103 sshd[13127]: Unable to negotiate with 141.98.10.246 port 38014: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:55:05 ip-10-2-40-103 sshd[13129]: Unable to negotiate with 141.98.10.246 port 42614: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 15:16:10 ip-10-2-40-103 sshd[13191]: Received disconnect from 61.177.173.21 port 60983:11: [preauth]
Dec 04 15:16:10 ip-10-2-40-103 sshd[13191]: Disconnected from authenticating user root 61.177.173.21 port 60983 [preauth]
3. Erstellen von Benutzern und Gruppen und Hinzufügen der erforderlichen Verzeichnisse
Als nächstes werden wir sicherstellen, dass die erforderlichen Benutzer im System vorhanden sind. In meinem Fall möchte ich die sftp-Benutzer zu Hause als /srv/sftp
haben
Lassen Sie uns das Zuhause /srv/sftp
erstellen mit diesem Befehl:
sudo mkdir /srv/sftp
Dann lassen Sie uns eine Dachgruppe nur für SFTP erstellen
sudo groupadd sftpusers
Erstellen Sie dann einen reinen sftp-Benutzer namens citizix:
sudo useradd -G sftpusers -d /srv/sftp/citizix -s /sbin/nologin citizix
Die obigen Optionen bewirken Folgendes:
-G sftpusers
:Benutzer erstellen, ansftpusers
anhängen Gruppe-d /srv/sftp/citizix
:Legen Sie das Home-Verzeichnis als/srv/sftp/citizix
fest-s /sbin/nologin
:Wir wollen nicht, dass sich der Benutzer anmeldet, also keine SSH-Anmelde-Shell- Zu guter Letzt der Nutzername als
citizix
Fügen Sie dann mit diesem Befehl ein Passwort zum erstellten Benutzer hinzu:
$ sudo passwd citizix
Changing password for user citizix.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
3. SSH-Dienst konfigurieren
Nachdem wir nun die notwendige Software installiert und die Benutzer und Gruppen erstellt haben, lassen Sie uns ssh konfigurieren.
Stellen Sie sicher, dass die Kennwortauthentifizierung für ssh aktiviert ist. Bearbeiten Sie die Konfigurationsdatei hier /etc/ssh/sshd_config
:
sudo vim /etc/ssh/sshd_config
Stellen Sie dann sicher, dass diese Zeile nicht kommentiert ist:
PasswordAuthentication yes
Als Nächstes müssen wir Regeln für die Benutzer in den sftpusers
hinzufügen Gruppe als sftp betrachtet werden. Bearbeiten Sie die Konfigurationsdatei:
sudo vim /etc/ssh/sshd_config
Fügen Sie diesen Inhalt am Ende der Datei hinzu:
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /srv/sftp
ForceCommand internal-sftp
Starten Sie dann sshd neu, um die Konfiguration neu zu laden:
sudo systemctl restart sshd
Prüfen Sie, ob sshd
läuft wie erwartet:
$ sudo systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-12-04 15:48:19 UTC; 18s ago
Main PID: 14269 (sshd)
Tasks: 1 (limit: 4606)
Memory: 892.0K
CGroup: /system.slice/sshd.service
└─14269 sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups
Dec 04 15:48:19 ip-10-2-40-103 systemd[1]: Started OpenSSH Daemon.
Dec 04 15:48:19 ip-10-2-40-103 sshd[14269]: Server listening on 0.0.0.0 port 22.
Dec 04 15:48:19 ip-10-2-40-103 sshd[14269]: Server listening on :: port 22.
4. Überprüfen, ob die Einrichtung wie erwartet funktioniert
Nachdem Sie den Benutzer erfolgreich erstellt und sftp-Konfigurationen hinzugefügt haben, testen Sie die Einrichtung mit dem Befehl:
❯ sftp [email protected]
[email protected]10.2.11.8's password:
Connected to 10.2.11.8.
sftp>
Jetzt haben wir den sftp-Server eingerichtet und laufen mit einem konfigurierten Benutzer!
Die Benutzer können sich beim Server anmelden und auf Dateien und Verzeichnisse zugreifen, die sich in ihrem Home-Verzeichnis befinden. Wenn Sie dem Benutzer andere Verzeichnisse außerhalb seines eigenen Verzeichnisses zuweisen möchten, stellen Sie einfach sicher, dass der Benutzer über ausreichende Zugriffsrechte verfügt. Diese Verzeichnisse und Dateien müssen sich im sftp-Verzeichnis befinden – /srv/sftp
.
Beispiel:Wenn ich möchte, dass der Benutzer auf das Verzeichnis /srv/sftp/paymentfiles
zugreift , gehen Sie wie folgt vor:
Erstellen Sie das Verzeichnis
sudo mkdir /srv/sftp/paymentfiles
Weisen Sie dann den Benutzer (citizix
) zugreifen, indem Sie sie zum Eigentümer des Verzeichnisses machen:
sudo chown citizix:sftpusers /srv/sftp/paymentfiles
Das ist es. Benutzer sollten jetzt Zugriff haben.
Schlussfolgerung
In diesem Handbuch haben wir es geschafft, einen sftp-Server in einem Archlinux-Server einzurichten.