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é
- Comment travailler avec le client SFTP sous Linux – 10 commandes sftp
- Comment configurer un serveur SFTP sur le serveur Debian 11
- 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 :
- Machine Arch Linux
- 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 pacman -Syyu
2. S'assurer que le service SSH est installé
Vérifiez que le ssh est installé :
$ 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
Si ssh n'est pas installé, installez-le avec cette commande :
sudo pacman -S openssh
Maintenant qu'il est installé, démarrez le service
sudo systemctl start sshd
Confirmer son statut
$ 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. 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
Changing password for user citizix.
New password:
Retype new password:
passwd: all authentication tokens 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
● 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. 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]10.2.11.8's password:
Connected to 10.2.11.8.
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 un serveur Archlinux dans ce guide.