Come posso creare un utente SFTP sulla mia istanza Lightsail?

Ultimo aggiornamento: 14-10-2021

Desidero creare un utente SFTP sulla mia istanza Amazon Lightsail. In che modo posso farlo?

Risoluzione

Nota: nelle seguenti fasi viene creato un utente SFTP che ha accesso all'ambiente chroot (jail chroot) senza accesso SSH. L'utente SFTP non può accedere alle directory esterne all'ambiente chroot o alla directory. Quindi, la directory chroot diventa la directory root per l'utente.

1.    Crea un gruppo per gli utenti SFTP. Il gruppo aiuta a gestire molti utenti SFTP diversi. In questo esempio, il nome del gruppo è sftp_group. È possibile modificare il nome in un nome di gruppo di tua scelta.

sudo groupadd sftp_group

2.    Crea un utente sull'istanza con una directory home. Questo utente esegue solo processi SFTP e non dispone di una shell di accesso SSH. Nell'esempio seguente, sostituisci sftp_user con un nome utente a tua scelta.

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

3.    L'utente può autenticarsi in diversi modi quando si connette al server tramite SFTP. Nell'esempio seguente viene utilizzata una password e un'autenticazione basata su chiave SSH.

Autenticazione password

Per richiedere l'autenticazione tramite password, crea una password utilizzando il seguente comando:

sudo passwd sftp_user

Autenticazione basata su chiave SSH

Se utilizzi l'autenticazione basata su chiave SSH, dovrai creare i file SSH per l'utente e quindi aggiungere la chiave pubblica ai file. Per fare ciò:

Nella directory principale dell'utente, crea una cartella.ssh e un file authorized_keys:

sudo mkdir /home/sftp_user/.ssh
sudo touch /home/sftp_user/.ssh/authorized_keys

Aggiungi la chiave pubblica SSH che desideri utilizzare al file /home/sftp_user/.ssh/authorized_keys. Per maggiori informazioni, consulta Configurazione di SSH per le istanze Lightsail basate su Linux/UNIX.

Emetti i seguenti comandi per modificare la proprietà e le autorizzazioni della directory principale dell'utente:

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

L'esempio precedente utilizza l’autorizzazione 755 nella directory /home/sftp_user e modifica la proprietà dell'utente root. Questo perché la directory verrà utilizzata come directory chroot. Tieni presente che tutti i componenti del percorso devono essere directory di proprietà di root che non sono scrivibili da nessun altro utente o gruppo.

4.    Modifica il file /etc/ssh/sshd_config procedendo come segue:

Modifica la riga Subsystem sftp commentando la riga Subsystem sftp /usr/libexec/openssh/sftp-server:

# Subsystem sftp /usr/libexec/openssh/sftp-server

Sostituisci la riga precedente con:

Subsystem sftp internal-sftp

Aggiungi le direttive per limitare l'accesso degli utenti SFTP. Queste direttive devono essere aggiunte nella parte inferiore del file:

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

Nell'esempio precedente, la direttiva ChrootDirectory viene utilizzata per specificare la directory principale per gli utenti SFTP (jail chroot). L’utente appartenente al sftp_group utilizza il percorso /home/ %u come directory principale. I caratteri %u rappresentano l'utente. Puoi modificare la directory principale per l'utente.

La direttiva ForceCommand internal-sftp impone l'utilizzo di un server SFTP in corso.

Se si utilizza l'autenticazione tramite password, la direttiva PasswordAuthentication si trova nel file /etc/ssh/sshd_config, quindi assicurati che sia impostata su yes.

5.    Creare le directory chroot che devono essere utilizzate dall'utente. Sostituisci il nome della directory sftp_user e uploads con i tuoi nomi preferiti.

sudo mkdir /home/sftp_user/uploads

Modifica la proprietà dei file:

sudo chown sftp_user:sftp_group /home/sftp_user/uploads

6.    Verifica che le autorizzazioni di directory siano quelle illustrate nell'esempio seguente:

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

sudo systemctl restart sshd

8.    Connettiti all’istanza tramite sftp:

Autenticazione password

# sftp sftp_user@example.com
sftp_user@example.com's password:

Autenticazione basata su chiave SSH

# sftp -i key.pem sftp_user@example.com

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?