Come posso creare un utente SFTP sulla mia istanza Lightsail?

3 minuti di lettura
0

Desidero creare un utente SFTP sulla mia istanza Amazon Lightsail.

Risoluzione

Nota: i seguenti passaggi permettono di creare un utente SFTP con accesso a un ambiente chroot (chroot jail) senza accesso SSH. L'utente SFTP non può accedere alle directory esterne all'ambiente o alla directory chroot. La directory chroot diventa quindi la directory principale di questo utente.

Configura il gruppo e l’utente SFTP

  1. Crea un gruppo per gli utenti SFTP con il seguente comando:

    sudo groupadd sftp_group

    Nota: sostituisci sftp_group con il nome del tuo gruppo.

  2. Crea un utente sull'istanza con una directory home senza accesso alla shell (interprete di comandi) di login SSH. Per fare ciò, esegui il seguente comando:

    sudo useradd -g sftp_group -m -d  /home/sftp_user -s /sbin/nologin sftp_user

    Nota: sostituisci sftp_user con il tuo nome utente.

Configura l'autenticazione utente con l'autenticazione tramite password o basata su chiave SSH

Autenticazione tramite password

Usa il seguente comando per creare una password:

sudo passwd sftp_user

Autenticazione basata su chiave SSH

  1. Per richiedere l'autenticazione basata su chiave SSH, crea una cartella .ssh nella directory home dell'utente. Quindi, crea un authorized_keys:

    sudo mkdir /home/sftp_user/.ssh
    sudo touch /home/sftp_user/.ssh/authorized_keys
  2. Aggiungi la chiave pubblica SSH che desideri usare al file /home/sftp_user/.ssh/authorized_keys. Per ulteriori informazioni, consulta Set up SSH keys for Lightsail.

  3. Per modificare la proprietà e le autorizzazioni della directory home dell'utente, esegui i seguenti comandi:

    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

    Nota: l'esempio precedente utilizza l'autorizzazione 755 nella directory /home/sftp_user quindi cambia la proprietà all'utente root. Questa directory utente viene utilizzata come directory chroot.

Modifica il file /etc/ssh/sshd_config

  1. Nella riga Subsystem sftp commenta la riga Subsystem sftp /usr/libexec/openssh/sftp-server:

    # Subsystem sftp /usr/libexec/openssh/sftp-server
  2. Sostituisci la riga precedente con il testo seguente:

    Subsystem sftp internal-sftp
  3. Per limitare l'accesso degli utenti SFTP, aggiungi il seguente testo al termine del file:

    Match Group sftp_group
    ChrootDirectory /home/%u
    ForceCommand internal-sftp

    Nell'esempio precedente, ChrootDirectory specifica la directory principale per gli utenti SFTP. MatchGroup identifica gli utenti in sftp_group che utilizzano il percorso /home/%u come directory root. I caratteri %u rappresentano l'utente. ForceCommand internal-sftp forza l'uso di un server SFTP in-process.

  4. Se usi l'autenticazione tramite password, imposta PasswordAuthentication nel file /etc/ssh/sshd_config su yes.

Crea le directory chroot per l'utente

  1. Per creare una directory chroot, esegui i seguenti passaggi:
    sudo mkdir /home/sftp_user/uploads
    Nota: sostituisci il nome della directory, sftp_user e uploads con il nome della tua directory.
  2. Modifica la proprietà dei file:
    sudo chown sftp_user:sftp_group /home/sftp_user/uploads
    Nota: sostituisci il nome della directory, sftp_user e uploads con il nome della tua directory.

Verifica le modifiche, quindi riavvia il servizio SSHD

  1. Verifica che le autorizzazioni per la directory siano simili a quelle nell'esempio seguente:

    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. Riavvia il servizio SSHD:

    sudo systemctl restart sshd

Connettiti all'istanza con SFTP

Autenticazione tramite password

Esegui quanto segue:

# sftp sftp_user@example.com's password:

Autenticazione basata su chiave SSH

Esegui quanto segue:

# sftp -i key.pem sftp_user@example.com
AWS UFFICIALE
AWS UFFICIALEAggiornata 9 mesi fa