SFTP sta per "SSH File Transfer Protocol". SFTP è un protocollo di trasferimento file utilizzato per trasferire file tra due server. Per impostazione predefinita, SFTP consente di trasferire file su tutti i server con accesso SSH abilitato. Tuttavia, garantirà l'accesso al terminale a tutti gli utenti e questo non è raccomandato per motivi di sicurezza.
In questo tutorial impareremo come creare un utente SFTP senza accesso alla shell in modo che l'utente abbia solo accesso SFTP e non accesso SSH.
Prerequisiti
- Un nuovo VPS CentOS 8 sulla piattaforma Atlantic.net Cloud.
- Una password di root configurata sul tuo server.
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo CentOS 8 come sistema operativo con almeno 1 GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Dopo aver effettuato l'accesso al server CentOS 8, esegui il comando seguente per aggiornare il sistema di base con gli ultimi pacchetti disponibili.
dnf update -y
Fase 2:crea un utente SFTP
Innanzitutto, dovrai creare un nuovo utente con solo accesso al trasferimento di file. Puoi creare un nuovo utente chiamato sftp usando il seguente comando:
adduser sftp
Quindi, imposta la password per l'utente di cui sopra:
passwd sftp
Fornisci la password desiderata e premi invio.
Fase 3:crea una struttura di directory per i trasferimenti di file
Successivamente, dovrai creare una struttura di directory per il trasferimento di file per limitare l'accesso SFTP a una directory.
Puoi creare una nuova directory con il seguente comando:
mkdir -p /opt/sftp/public
Quindi, imposta la proprietà della directory /opt/sftp/ su root:
chown root:root /opt/sftp
Quindi, dai le autorizzazioni appropriate con il seguente comando:
chmod 755 /opt/sftp
Quindi, imposta la proprietà della directory pubblica sull'utente sftp:
chown sftp:sftp /opt/sftp/public
Fase 4 – Configura SSH per SFTP
Successivamente, dovrai configurare SSH per limitare l'accesso a una directory e impedire l'accesso al terminale all'utente sftp.
Puoi farlo modificando il file /etc/ssh/sshd_config:
nano /etc/ssh/sshd_config
Aggiungi le seguenti righe alla fine del file:
Match User sftp ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /opt/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Salva e chiudi il file quando hai finito. Quindi, riavvia il servizio SSH per implementare le modifiche:
systemctl restart sshd
Fase 5:verifica SFTP
Ora verifica l'accesso SFTP con il seguente comando:
sftp [email protected]
Ti verrà chiesto di fornire una password come mostrato di seguito:
[email protected]'s password:
Fornisci la tua password utente sftp e premi Invio. Una volta connesso, dovresti vedere il seguente output:
Connected to your-server-ip. sftp>
Quindi, esegui il comando seguente per elencare la directory:
sftp> ls
Dovresti vedere la directory pubblica nel seguente output:
public sftp>
Quindi, verifica se sei in grado di stabilire una connessione SSH o meno:
ssh [email protected]
Ti verrà chiesto di fornire una password come mostrato di seguito:
[email protected]'s password:
Fornisci la tua password utente sftp e premi Invio. Dovresti vedere il seguente output:
This service allows sftp connections only. Connection to your-server-ip closed.
L'output sopra indica che l'utente sftp non può più accedere alla shell del server tramite SSH.
Conclusione
Congratulazioni! Hai configurato correttamente SFTP senza accesso alla shell su CentOS 8. Puoi anche utilizzare questa configurazione per più utenti e directory. Inizia oggi stesso con SFTP su un VPS di Atlantic.Net!