Le protocole de transfert de fichiers est un protocole de communication standard utilisé pour le transfert de fichiers informatiques d'un serveur à un client sur un réseau informatique.
FTP n'est pas populaire aujourd'hui car il manque de sécurité. Lorsqu'un fichier est envoyé à l'aide de ce protocole, les données, le nom d'utilisateur et le mot de passe sont tous partagés en texte brut, ce qui signifie qu'un pirate peut accéder à ces informations avec peu ou pas d'effort. Pour que les données soient sécurisées, vous devez utiliser une version mise à jour de FTP comme SFTP.
Le protocole de transfert de fichiers sécurisé SFTP est un protocole de transfert de fichiers qui fournit un accès sécurisé à un ordinateur distant pour fournir des communications sécurisées. Il exploite SSH - Secure Socket Shell et est souvent appelé "Secure Shell File Transfer Protocol".
Contenu associé
- Télécharger des fichiers à partir du serveur SFTP à l'aide d'un script python
- Répertorier, charger et télécharger des fichiers depuis un serveur SFTP à l'aide de golang
- Comment configurer un serveur SFTP sur le serveur OpenSUSE Leap 15.3
- Comment installer et configurer le serveur sftp dans Ubuntu 20.04
- Comment configurer un serveur SFTP sur le serveur CentOS 8/RHEL 8
Prérequis
Pour suivre ce guide, assurez-vous d'avoir les éléments suivants :
- Un serveur Debian 11
- Accès root au serveur ou à un utilisateur disposant d'un accès root
- Accès Internet depuis le serveur
Table des matières
- S'assurer que le serveur est à jour
- S'assurer que le service SSH est installé
- Créer des utilisateurs et des groupes et ajouter les répertoires nécessaires
- Configuration du service ssh
- Vérifier que la configuration fonctionne comme prévu
1. S'assurer que le serveur est à jour
Avant de continuer, assurez-vous que votre système est à jour. Utilisez cette commande pour actualiser les packages système et les mettre à jour.
sudo apt update
sudo apt upgrade -y
2. S'assurer que le service SSH est installé
Vérifiez que le ssh est installé :
$ sudo apt install -y openssh-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
openssh-server is already the newest version (1:8.4p1-5).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Maintenant qu'il est installé, démarrez le service
sudo systemctl start sshd
Confirmer son statut
$ sudo systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-12-03 10:18:03 UTC; 2 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 665 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 682 (sshd)
Tasks: 1 (limit: 4626)
Memory: 6.2M
CPU: 9.132s
CGroup: /system.slice/ssh.service
└─682 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Dec 05 09:20:46 ip-10-2-40-122 sshd[14717]: Received disconnect from 221.181.185.94 port 47597:11: [preauth]
Dec 05 09:20:46 ip-10-2-40-122 sshd[14717]: Disconnected from authenticating user root 221.181.185.94 port 47597 [preauth]
Dec 05 10:34:30 ip-10-2-40-122 sshd[14797]: Received disconnect from 222.186.30.76 port 23207:11: [preauth]
Dec 05 10:34:30 ip-10-2-40-122 sshd[14797]: Disconnected from authenticating user root 222.186.30.76 port 23207 [preauth]
Dec 05 10:34:41 ip-10-2-40-122 sshd[14799]: Received disconnect from 221.181.185.151 port 18104:11: [preauth]
Dec 05 10:34:41 ip-10-2-40-122 sshd[14799]: Disconnected from authenticating user root 221.181.185.151 port 18104 [preauth]
Dec 05 11:11:54 ip-10-2-40-122 sshd[14830]: Received disconnect from 221.131.165.65 port 19729:11: [preauth]
Dec 05 11:11:54 ip-10-2-40-122 sshd[14830]: Disconnected from authenticating user root 221.131.165.65 port 19729 [preauth]
Dec 05 11:19:03 ip-10-2-40-122 sshd[14840]: Accepted publickey for admin from 105.231.148.146 port 60649 ssh2: RSA SHA256:nDQ1FMciYtGpPYjdOwbUTVg7kQxEFtAjoSdWulRilIA
Dec 05 11:19:03 ip-10-2-40-122 sshd[14840]: pam_unix(sshd:session): session opened for user admin(uid=1000) by (uid=0)
3. Créer des utilisateurs et des groupes et ajouter les répertoires nécessaires
Ensuite, nous nous assurerons que les utilisateurs nécessaires sont présents dans le système. Dans mon cas, j'aimerais que les utilisateurs sftp soient chez /srv/sftp
Créons la maison /srv/sftp
avec cette commande :
sudo mkdir /srv/sftp
Alors créons un groupe parapluie pour SFTP uniquement
sudo groupadd sftpusers
Créez ensuite un utilisateur sftp uniquement appelé citizix :
sudo useradd -G sftpusers -d /srv/sftp/citizix -s /sbin/nologin citizix
Les options ci-dessus effectuent les actions suivantes :
-G sftpusers
:Créer un utilisateur, ajouter àsftpusers
groupe-d /srv/sftp/citizix
:Définissez le répertoire personnel sur/srv/sftp/citizix
-s /sbin/nologin
:Nous ne voulons pas que l'utilisateur se connecte, donc pas de shell de connexion ssh- Enfin, le nom d'utilisateur est
citizix
Ajoutez ensuite un mot de passe à l'utilisateur créé à l'aide de cette commande :
$ sudo passwd citizix
New password:
Retype new password:
passwd: password updated successfully
3. Configuration du service ssh
Maintenant que nous avons installé le logiciel nécessaire et créé les utilisateurs et les groupes, configurons ssh.
Assurez-vous que l'authentification par mot de passe est activée pour ssh. Modifiez le fichier de configuration ici /etc/ssh/sshd_config
:
sudo vim /etc/ssh/sshd_config
Assurez-vous ensuite que cette ligne n'est pas commentée :
PasswordAuthentication yes
Ensuite, nous devons ajouter des règles pour les utilisateurs dans sftpusers
groupe à considérer comme sftp. Modifiez le fichier de configuration :
sudo vim /etc/ssh/sshd_config
Ajoutez ce contenu en bas du fichier :
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /srv/sftp
ForceCommand internal-sftp
Redémarrez ensuite sshd pour recharger la configuration :
sudo systemctl restart sshd
Vérifiez que sshd
fonctionne comme prévu :
$ sudo systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-12-05 11:22:02 UTC; 12s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 15292 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 15293 (sshd)
Tasks: 1 (limit: 4626)
Memory: 1.0M
CPU: 159ms
CGroup: /system.slice/ssh.service
└─15293 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Dec 05 11:22:02 ip-10-2-40-122 systemd[1]: Starting OpenBSD Secure Shell server...
Dec 05 11:22:02 ip-10-2-40-122 sshd[15293]: Server listening on 0.0.0.0 port 22.
Dec 05 11:22:02 ip-10-2-40-122 sshd[15293]: Server listening on :: port 22.
Dec 05 11:22:02 ip-10-2-40-122 systemd[1]: Started OpenBSD Secure Shell server.
4. Vérifier que la configuration fonctionne comme prévu
Après avoir réussi à créer l'utilisateur et à ajouter des configurations sftp, testons la configuration à l'aide de la commande :
❯ sftp [email protected]
[email protected]'s password:
Connected to 18.236.122.10.
sftp>
Nous avons maintenant un serveur sftp opérationnel avec un utilisateur configuré !
Les utilisateurs pourront se connecter au serveur et accéder aux fichiers et répertoires situés dans leur répertoire personnel. Si vous souhaitez donner à l'utilisateur d'autres répertoires en dehors de son propre répertoire, assurez-vous simplement que l'utilisateur dispose de suffisamment de droits d'accès. Ces répertoires et fichiers doivent se trouver dans le répertoire sftp – /srv/sftp
.
Exemple :si je veux que l'utilisateur accède au répertoire /srv/sftp/paymentfiles
, procédez comme suit :
Créer le répertoire
sudo mkdir /srv/sftp/paymentfiles
Attribuez ensuite l'utilisateur (citizix
) accéder en leur faisant posséder le répertoire :
sudo chown citizix:sftpusers /srv/sftp/paymentfiles
C'est ça. Les utilisateurs devraient maintenant y avoir accès.
Conclusion
Nous avons réussi à configurer un serveur sftp dans une Debian 11 dans ce guide.