Wie erstelle ich einen SFTP-Benutzer auf meiner Lightsail-Instance?
Ich möchte einen SFTP-Benutzer auf meiner Amazon-Lightsail-Instance erstellen. Wie kann ich vorgehen?
Auflösung
Hinweis: Mit den folgenden Schritten wird ein SFTP-Benutzer erstellt, der Zugriff auf die Chroot-Umgebung (Chroot-Gefängnis) ohne SSH-Zugriff hat. Der SFTP-Benutzer kann nicht auf die Verzeichnisse außerhalb der Chroot-Umgebung oder des Chroot-Verzeichnisses zugreifen. Das Chroot-Verzeichnis wird also zum Stammverzeichnis für den Benutzer.
1. Erstellen Sie eine Gruppe für die SFTP-Benutzer. Die Gruppe hilft bei der Verwaltung vieler verschiedener SFTP-Benutzer. In diesem Beispiel lautet der Gruppenname sftp_group. Sie können den Namen in einen Gruppennamen Ihrer Wahl ändern.
sudo groupadd sftp_group
2. Erstellen Sie einen Benutzer auf der Instance mit einem Home-Verzeichnis. Dieser Benutzer führt nur SFTP-Aufgaben aus und hat keine SSH-Login-Shell. Ersetzen Sie im folgenden Beispiel sftp_user durch einen Benutzernamen Ihrer Wahl.
sudo useradd -g sftp_group -m -d /home/sftp_user -s /sbin/nologin sftp_user
3. Der Benutzer kann sich auf verschiedene Arten authentifizieren, wenn er über SFTP eine Verbindung zum Server herstellt. Das folgende Beispiel verwendet ein Passwort und eine schlüsselbasierte SSH-Authentifizierung.
Passwortauthentifizierung
Um eine Passwortauthentifizierung anzufordern, erstellen Sie ein Passwort mit dem folgenden Befehl:
sudo passwd sftp_user
Schlüsselbasierte SSH-Authentifizierung
Wenn Sie die schlüsselbasierte SSH-Authentifizierung verwenden, müssen Sie die SSH-Dateien für den Benutzer erstellen und dann den öffentlichen Schlüssel zu den Dateien hinzufügen. Um das zu tun:
Erstellen Sie im Home-Verzeichnis des Benutzers einen .ssh-Ordner und eine authorized_keys-Datei:
sudo mkdir /home/sftp_user/.ssh sudo touch /home/sftp_user/.ssh/authorized_keys
Fügen Sie den öffentlichen SSH-Schlüssel, den Sie verwenden möchten, zur Datei /home/sftp_user/.ssh/authorized_keys hinzu. Weitere Informationen finden Sie unter Einrichten von SSH für Ihre Linux/Unix-basierten Lightsail-Instances.
Führen Sie die folgenden Befehle aus, um den Besitz und die Berechtigungen des Home-Verzeichnisses des Benutzers zu ändern:
sudo chown sftp_user:sftp_group /home/sftp_user/.ssh -R sudo chown root:sftp_group /home/sftp_user/ sudo chmod 755 /home/sftp_user/ sudo chmod 700 /home/sftp_user/.ssh/ sudo chmod 600 /home/sftp_user/.ssh/authorized_keys
Das vorangegangene Beispiel verwendet die Berechtigung 755 für das Verzeichnis /home/sftp_user und wechselt den Besitzer auf den Stammbenutzer. Dies liegt daran, dass das Verzeichnis als Chroot-Verzeichnis verwendet wird. Beachten Sie, dass alle Komponenten des Pfadnamens stammeigene Verzeichnisse sein müssen, die von keinem anderen Benutzer oder einer anderen Gruppe beschreibbar sind.
4. Bearbeiten Sie die Datei /etc/ssh/sshd_config wie folgt:
Ändern Sie die sftp-Zeile des Subsystems, indem Sie die Zeile Subsystem sftp /usr/libexec/openssh/sftp-Server auskommentieren:
# Subsystem sftp /usr/libexec/openssh/sftp-server
Ersetzen Sie die vorhergehende Zeile durch:
Subsystem sftp internal-sftp
Fügen Sie Anweisungen hinzu, um den Zugriff des SFTP-Benutzers zu beschränken. Diese Anweisungen müssen am Ende der Datei hinzugefügt werden:
Match Group sftp_group ChrootDirectory /home/%u ForceCommand internal-sftp
Im vorangegangenen Beispiel wird die ChrootDirectory-Anweisung verwendet, um das Stammverzeichnis für die SFTP-Benutzer anzugeben (Chroot-Gefängnis). Passen Sie den Block an, den der zur sftp_group gehörende Benutzer den Pfad /home/ %u als Stammverzeichnis verwendet. Die Zeichen %u stehen für den Benutzer. Sie können das Stammverzeichnis für Ihren Benutzer ändern.
Die Anweisung ForceCommand internal-sftp erzwingt die Verwendung eines prozessinternen SFTP-Servers.
Wenn Sie die Passwortauthentifizierung verwenden, suchen Sie die Anweisung PasswordAuthentication in der Datei /etc/ssh/sshd_config und stellen Sie sicher, dass sie auf ja gesetzt ist.
5. Erstellen Sie die Chroot-Verzeichnisse, die vom Benutzer verwendet werden sollen. Ersetzen Sie den Verzeichnisnamen sftp_user und laden Sie ihn durch Ihre bevorzugten Namen hoch.
sudo mkdir /home/sftp_user/uploads
Ändern Sie den Besitz der Dateien:
sudo chown sftp_user:sftp_group /home/sftp_user/uploads
6. Stellen Sie sicher, dass die Verzeichnisberechtigungen wie im folgenden Beispiel gezeigt sind:
ls -ld /home drwxr-xr-x 3 root root 23 Oct 6 15:17 /home ls -ld /home/sftp_user drwxr-xr-x 3 root sftp_group 21 Oct 6 15:17 /home/sftp_user ls -ld /home/sftp_user/uploads/ drwxr-xr-x 2 sftp_user sftp_group 6 Oct 6 15:17 /home/sftp_user/uploads/
7. Starten Sie den sshd-Service neu:
sudo systemctl restart sshd
8. Stellen Sie über sftp eine Verbindung zur Instance her:
Passwortauthentifizierung
# sftp sftp_user@example.com sftp_user@example.com's password:
Schlüsselbasierte SSH-Authentifizierung
# sftp -i key.pem sftp_user@example.com

Relevanter Inhalt
- Wie installiere ich eine GUI auf meiner Amazon-EC2-Instance, auf der Amazon Linux 2 ausgeführt wird?AWS OFFICIALAktualisiert vor 8 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 10 Monaten
- AWS OFFICIALAktualisiert vor 7 Monaten