Wie erstelle ich einen SFTP-Benutzer auf meiner Lightsail Instance?

Lesedauer: 3 Minute
0

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

  1. 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.

  2. 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

  1. 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
  2. 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.

  3. 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

  1. Kommentieren Sie in der Zeile Subsystem sftp Zeile Subsystem sftp/usr/libexec/openssh/sftp-server aus:

    # Subsystem sftp /usr/libexec/openssh/sftp-server
  2. Ersetzen Sie die vorhergehende Zeile durch den folgenden Text:

    Subsystem sftp internal-sftp
  3. 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.

  4. 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

  1. Um ein Chroot-Verzeichnis zu erstellen, führen Sie den folgenden Befehl aus:
    sudo mkdir /home/sftp_user/uploads
    Hinweis: Ersetzen Sie den Verzeichnisnamen sftp_user und uploads durch Ihren Verzeichnisnamen.
  2. Ändern Sie den Besitz der Dateien:
    sudo chown sftp_user:sftp_group /home/sftp_user/uploads
    Hinweis: Ersetzen Sie den Verzeichnisnamen sftp_user und uploads durch Ihren Verzeichnisnamen.

Ihre Änderungen überprüfen und den SSHD-Dienst neu starten

  1. 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/
  2. 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
AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr