Il File Transfer Protocol è un protocollo di comunicazione standard utilizzato per il trasferimento di file di computer da un server a un client su una rete di computer.
FTP non è popolare oggi perché manca di sicurezza. Quando un file viene inviato utilizzando questo protocollo, i dati, il nome utente e la password sono tutti condivisi in testo normale, il che significa che un hacker può accedere a queste informazioni con uno sforzo minimo o nullo. Affinché i dati siano protetti, devi utilizzare una versione aggiornata di FTP come SFTP.
SFTP Secure File Transfer Protocol è un protocollo di trasferimento file che fornisce un accesso sicuro a un computer remoto per fornire comunicazioni sicure. Sfrutta SSH - Secure Socket Shell ed è spesso indicato anche come "Secure Shell File Transfer Protocol".
Contenuti correlati
- Come lavorare con il client SFTP in Linux – 10 comandi sftp
- Come configurare un server SFTP su Debian 11 Server
- Scarica file dal server SFTP utilizzando uno script python
- Elenca, carica e scarica file da un server SFTP utilizzando golang
- Come configurare un server SFTP su OpenSUSE Leap 15.3 Server
- Come installare e configurare il server sftp in Ubuntu 20.04
- Come configurare un server SFTP su CentOS 8 /RHEL 8 Server
Prerequisiti
Per seguire questa guida assicurati di avere quanto segue:
- Macchina Arch Linux
- Accesso root al server o utente con accesso root
- Accesso a Internet dal server
Indice dei contenuti
- Assicurarsi che il server sia aggiornato
- Assicurarsi che il servizio SSH sia installato
- Creazione di utenti e gruppi e aggiunta delle directory necessarie
- Configurazione del servizio ssh
- Verifica che la configurazione funzioni come previsto
1. Garantire che il server sia aggiornato
Prima di procedere, assicurati che il tuo sistema sia aggiornato. Utilizzare questo comando per aggiornare i pacchetti di sistema e aggiornarli.
sudo pacman -Syyu
2. Assicurarsi che il servizio SSH sia installato
Verifica che ssh sia installato:
$ sudo pacman -Qi openssh
Name : openssh
Version : 8.6p1-1
Description : Premier connectivity tool for remote login with the SSH protocol
Architecture : x86_64
URL : https://www.openssh.com/portable.html
Licenses : custom:BSD
Groups : None
Provides : None
Depends On : glibc krb5 openssl libedit ldns libxcrypt libcrypt.so=2-64 zlib pam
Optional Deps : xorg-xauth: X11 forwarding
x11-ssh-askpass: input passphrase in X
libfido2: FIDO/U2F support
Required By : None
Optional For : None
Conflicts With : None
Replaces : None
Installed Size : 5.79 MiB
Packager : Giancarlo Razzolini <[email protected]>
Build Date : Mon 19 Apr 2021 11:32:46 AM UTC
Install Date : Thu 03 Jun 2021 03:23:32 AM UTC
Install Reason : Explicitly installed
Install Script : Yes
Validated By : Signature
Se ssh non è installato, installa con questo comando:
sudo pacman -S openssh
Ora che è installato, avvia il servizio
sudo systemctl start sshd
Conferma il suo stato
$ sudo systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-12-03 10:19:02 UTC; 17min ago
Main PID: 467 (sshd)
Tasks: 1 (limit: 4606)
Memory: 5.0M
CGroup: /system.slice/sshd.service
└─467 sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups
Dec 04 14:53:30 ip-10-2-40-103 sshd[13109]: Unable to negotiate with 141.98.10.246 port 34078: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:53:42 ip-10-2-40-103 sshd[13111]: Unable to negotiate with 141.98.10.246 port 38674: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:53:53 ip-10-2-40-103 sshd[13115]: Unable to negotiate with 141.98.10.246 port 43268: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:05 ip-10-2-40-103 sshd[13117]: Unable to negotiate with 141.98.10.246 port 47864: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:17 ip-10-2-40-103 sshd[13119]: Unable to negotiate with 141.98.10.246 port 52460: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:41 ip-10-2-40-103 sshd[13123]: Unable to negotiate with 141.98.10.246 port 33418: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:54:53 ip-10-2-40-103 sshd[13127]: Unable to negotiate with 141.98.10.246 port 38014: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 14:55:05 ip-10-2-40-103 sshd[13129]: Unable to negotiate with 141.98.10.246 port 42614: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exc>
Dec 04 15:16:10 ip-10-2-40-103 sshd[13191]: Received disconnect from 61.177.173.21 port 60983:11: [preauth]
Dec 04 15:16:10 ip-10-2-40-103 sshd[13191]: Disconnected from authenticating user root 61.177.173.21 port 60983 [preauth]
3. Creazione di utenti e gruppi e aggiunta delle directory necessarie
Successivamente ci assicureremo che gli utenti necessari siano presenti nel sistema. Nel mio caso, vorrei avere gli utenti sftp a casa come /srv/sftp
Creiamo la home /srv/sftp
con questo comando:
sudo mkdir /srv/sftp
Quindi creiamo un gruppo ombrello solo per SFTP
sudo groupadd sftpusers
Quindi crea un utente solo sftp chiamato citizix:
sudo useradd -G sftpusers -d /srv/sftp/citizix -s /sbin/nologin citizix
Le opzioni precedenti effettuano le seguenti operazioni:
-G sftpusers
:crea utente, aggiungi asftpusers
gruppo-d /srv/sftp/citizix
:imposta la home directory come/srv/sftp/citizix
-s /sbin/nologin
:Non vogliamo che l'utente esegua il login, quindi nessuna shell di login ssh- Infine, nome utente come
citizix
Quindi aggiungi la password all'utente creato usando questo comando:
$ sudo passwd citizix
Changing password for user citizix.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
3. Configurazione del servizio ssh
Ora che abbiamo installato il software necessario e creato utenti e gruppi, configuriamo ssh.
Assicurati che l'autenticazione della password sia abilitata per ssh. Modifica il file di configurazione qui /etc/ssh/sshd_config
:
sudo vim /etc/ssh/sshd_config
Quindi assicurati che questa riga non sia commentata:
PasswordAuthentication yes
Successivamente, dobbiamo aggiungere regole per gli utenti in sftpusers
gruppo da considerare come sftp. Modifica il file di configurazione:
sudo vim /etc/ssh/sshd_config
Aggiungi questo contenuto in fondo al file:
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /srv/sftp
ForceCommand internal-sftp
Quindi riavvia sshd per ricaricare la configurazione:
sudo systemctl restart sshd
Verifica che sshd
funziona come previsto:
$ sudo systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-12-04 15:48:19 UTC; 18s ago
Main PID: 14269 (sshd)
Tasks: 1 (limit: 4606)
Memory: 892.0K
CGroup: /system.slice/sshd.service
└─14269 sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups
Dec 04 15:48:19 ip-10-2-40-103 systemd[1]: Started OpenSSH Daemon.
Dec 04 15:48:19 ip-10-2-40-103 sshd[14269]: Server listening on 0.0.0.0 port 22.
Dec 04 15:48:19 ip-10-2-40-103 sshd[14269]: Server listening on :: port 22.
4. Verifica che la configurazione funzioni come previsto
Dopo aver creato con successo l'utente e aver aggiunto le configurazioni sftp, testiamo la configurazione usando il comando:
❯ sftp [email protected]
[email protected]10.2.11.8's password:
Connected to 10.2.11.8.
sftp>
Ora abbiamo il server sftp attivo e funzionante con un utente configurato!
Gli utenti potranno accedere al server e accedere a file e directory che si trovano nella loro home directory. Se vuoi assegnare l'utente ad altre directory al di fuori della propria directory, assicurati che l'utente disponga di diritti sufficienti per accedere. Queste directory e file devono trovarsi all'interno della directory sftp – /srv/sftp
.
Esempio:se voglio che l'utente acceda alla directory /srv/sftp/paymentfiles
, procedi come segue:
Crea la directory
sudo mkdir /srv/sftp/paymentfiles
Quindi assegnare l'utente(citizix
) accedere facendogli possedere la directory:
sudo chown citizix:sftpusers /srv/sftp/paymentfiles
Questo è tutto. Gli utenti dovrebbero ora avere accesso.
Conclusione
In questa guida siamo riusciti a configurare il server sftp in un server Archlinux.