Wie erstelle ich einen SFTP-Benutzer auf meiner Lightsail Instance?
Ich möchte einen SFTP-Benutzer auf meiner Amazon Lightsail Instance erstellen.
Behebung
**Hinweis:**Mit den folgenden Schritten erstellen Sie einen SFTP-Benutzer mit Zugriff auf eine Chroot-Umgebung (Chroot-Jail) ohne SSH-Zugriff. Der SFTP-Benutzer kann nicht auf die Verzeichnisse außerhalb der Chroot-Umgebung oder des Verzeichnisses zugreifen. Für diesen Benutzer ist das Chroot-Verzeichnis das Root-Verzeichnis.
Ihre SFTP-Gruppe und Ihren Benutzer einrichten
-
Erstellen Sie eine Gruppe für die SFTP-Benutzer mit dem folgenden Befehl:
sudo groupadd sftp_group
Hinweis: Ersetzen Sie sftp_group durch Ihren Gruppennamen.
-
Erstellen Sie auf der Instance einen Benutzer mit einem Home-Verzeichnis ohne Zugriff auf die SSH-Login-Shell. Führen Sie dazu den folgenden Befehl aus:
sudo useradd -g sftp_group -m -d /home/sftp_user -s /sbin/nologin sftp_user
Hinweis: Ersetzen Sie sftp_user durch Ihren Benutzernamen.
Die Benutzerauthentifizierung entweder mit Passwortauthentifizierung oder mit SSH-Schlüsselauthentifizierung einrichten
Passwort-Authentifizierung
Verwenden Sie den folgenden Befehl, um ein Passwort zu erstellen:
sudo passwd sftp_user
SSH-schlüsselbasierte Authentifizierung
-
Um eine auf SSH-Schlüsseln basierende Authentifizierung zu erfordern, erstellen Sie .ssh-Ordner im Home-Verzeichnis des Benutzers. Erstellen Sie dann 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 SSH-Schlüssel für Lightsail einrichten.
-
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 -Rsudo 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
Hinweis: Das vorherige Beispiel verwendet die Berechtigung 755 für das Verzeichnis /home/sftp_user und wechselt dann den Besitzer auf den Root-Benutzer. Dieses Benutzerverzeichnis wird als Chroot-Verzeichnis verwendet.
Die Datei /etc/ssh/sshd_config bearbeiten
-
Kommentieren Sie in der Zeile Subsystem sftp Zeile Subsystem sftp/usr/libexec/openssh/sftp-server aus:
# Subsystem sftp /usr/libexec/openssh/sftp-server
-
Ersetzen Sie die vorhergehende Zeile durch den folgenden Text:
Subsystem sftp internal-sftp
-
Um den SFTP-Benutzerzugriff einzuschränken, fügen Sie am Ende der Datei den folgenden Text hinzu:
Match Group sftp_group ChrootDirectory /home/%u ForceCommand internal-sftp
Im vorherigen Beispiel gibt das ChrootDirectory das Root-Verzeichnis für die SFTP-Benutzer an. MatchGroup identifiziert die Benutzer in der sftp_group, die den Pfad /home/%u als ihr Root-Verzeichnis verwenden. Die Zeichen %u stehen für den Benutzer. ForceCommand internal-sftp erzwingt die Verwendung eines prozessinternen SFTP-Servers.
-
Wenn Sie die Passwortauthentifizierung verwenden, setzen Sie PasswordAuthentication in der Datei /etc/ssh/sshd_config auf yes.
Die Chroot-Verzeichnisse für den Benutzer erstellen
- Um ein Chroot-Verzeichnis zu erstellen, führen Sie den folgenden Befehl aus:
Hinweis: Ersetzen Sie den Verzeichnisnamen sftp_user und uploads durch Ihren Verzeichnisnamen.sudo mkdir /home/sftp_user/uploads
- Ändern Sie den Besitz der Dateien:
Hinweis: Ersetzen Sie den Verzeichnisnamen sftp_user und uploads durch Ihren Verzeichnisnamen.sudo chown sftp_user:sftp_group /home/sftp_user/uploads
Ihre Änderungen überprüfen und den SSHD-Dienst neu starten
-
Stellen Sie sicher, dass die Verzeichnisberechtigungen dem folgenden Beispiel ähneln:
ls -ld /homedrwxr-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/
-
Starten Sie den SSHD-Dienst neu:
sudo systemctl restart sshd
Mit SFTP eine Verbindung zur Instance herstellen
Passwort-Authentifizierung
Führen Sie Folgendes aus:
# sftp sftp_user@example.com's password:
SSH-schlüsselbasierte Authentifizierung
Führen Sie Folgendes aus:
# sftp -i key.pem sftp_user@example.com

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr