Un petit mémo sur comment installer et configurer facilement un serveur SFTP sous Debian Jessie.
C’est quoi un serveur SFTP
Un serveur SFTP pour Secure File Transfert Protocol est comme son nom l’indique, un protocole de transfert de fichier sécurisé.
Avec ce protocole, le transfert de fichier est chiffré de bout à bout, ce qui permet de sécuriser l’envoie de fichier sans être lu ou intercepté. Le SFTP est une configuration particulière du serveur SSH, car le SFTP est basé sur SSH et non sur FTP.
Pourquoi un serveur SFTP au lieu d’un FTP sécurisé ?
Un serveur FTP (file Transfert Protocol) permet lui aussi de transférer des fichier mais il est de base pas sécurisé. Il est possible de chiffrer le transfert mais cela nécessite une lourde configuration. Avec le SFTP c’est plus simple à mettre en œuvre et c’est de base sécurisé.
Pour ceux qui veulent quand même installer un serveur FTP sécurisé, j’avais écris un article à ce sujet : https://memo-linux.com/comment-installer-un-serveur-ftp-securise-sous-debian-squeeze/
Installation et configuration du serveur OpenSSH
- Installation du paquet openssh-server :
apt install openssh-server
nano /etc/ssh/sshd_config
- Changer le port d’écoute 22 par autre de votre choix :
Port 666
PermitRootLogin no
Ajouter ces lignes à la fin du fichier de configuration :
Subsystem sftp internal-sftp Match group sftp ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no
- Subsystem sftp internal-sftp : Indiquation pour l’utilisation du serveur SFTP
- Match group sftp : seuls les utilisateurs appartenant au groupe
sftp
pourront se connecter au serveur. - ChrootDirectory /home/%u : définit la répertoire racine de destination chroot), qui est ici le répertoire personnel de chaque utilisateur.
- X11Forwarding no : Interdiction d’accès au serveur graphique.
- AllowTcpForwarding yes : autorise la redirection des ports TCP
La mise ne place d’un chroot, permet d’emprisonner l’utilisateur dans son répertoire racine et ne pourra pas se balader dans tous les répertoires du serveur.
Ajout d’un utilisateur pour accéder uniquement au SFTP
addgroup sftp
mkdir -p /home/fred
sftp
:useradd -s /bin/false -d /home/fred -g sftp fred
passwd fred
chown root:root /home/fred/
Attention ici, seuls les droits en écriture peuvent être attribués à root et uniquement à lui !
chmod -R 770 /home/fred/
usermod -d / fred
Test de connexion au serveur SFTP
- Activation du serveur SFTP :
systemctl restart ssh
- En ligne de commande :
sftp fred@sftp-server.domaine.tld
Avec l’aide de debian-administration.org
salut
si on a désactivé l’authentification compte/mot de passe au profit d’une authentification par clé,
est-ce que ça peut fonctionner ?
Salut,
je n’ai pas testé mais en principe si tu créé une clé liée à un utilisateur et ce dernier soit dans le groupe, qui a le droit de se connecter, ça devrait fonctionner…
Avec une auth par clé il faut utiliser winscp
bonjour, depuis quand le parametre ChrootDirectory existe-t-il?
j’ai un serveur sftp (debian 6 si je me souviens bien) et j’ai du utiliser MySecureShell pour chrooter les utilisateurs.
Bonjour. J’ai suivi le tutoriel mais lorsque je teste en ligne de commande, on m’affiche l’erreur suivante:
« /etc/ssh/ssh_config: line 55: Bad configuration option: subsystem
Unsupported Match attribute group
/etc/ssh/ssh_config line 56: Bad Match condition
Couldn’t read packet: Connection reset by peer ».
Comment y remedier?
Bonjour Almeira,
Sauf erreur de ma part, le fichier à modifier est /etc/ssh//sshd_config (avec un d après ssh), et non /etc/ssh/ssh_config.
Le d c’est pour daemon, c’est-à-dire le serveur ssh.
Ca t’aide?
Un truc que je ne comprends pas dans ta logique, c’est que tu fais un chown root:root /home/fred/ puis un chmod -R 755 /home/fred/. Es-tu sûr de bien comprendre ces commandes ? Sauf erreur de ma part, tu appropries le répertoire /home/fred/ à l’utilisateur root et au groupe root (donc fred ou sftp dans l’histoire, il va se faire voir). Puis tu donnes tous les droits à l’utilisateur root (soit), et les droits de lecture/exécution au groupe root (mais pas d’écriture !), et à tous les autres utilisateurs (but why ?).
Il serait plus logique de faire un chown root:fred /home/fred/ puis un chmod -R 770 /home/fred/. Ainsi, le groupe fred (dont l’utilisateur fred fait partie) aura les droits d’écriture sur son propre répertoire (ce qui est bien le but recherché ^^), et tous les autres utilisateurs n’auront aucun droits. Non ? En tout cas, ça fonctionne chez moi ; si je suis ton tuto à la lettre, je n’ai pas les droits d’écriture quand je me connecte.
De plus, dans le fichier /etc/ssh/sshd_config, il faut bien penser à ajouter fred à la directive AllowUsers.
la commande « chown root:root /home/fred » est pour chrooter l’utilisateur
fred,
« Attribution des droits sur le répertoire de l’utilisateur fred » :
chown root:root /home/fred/
Bonjour,
Je ne m’y connais pas SSH ni en SFTP mais j’aimerais savoir ce que je dois mettre dans « sftp fred@sftp-server.domaine.tld » à la place de sftp-server.domaine.tld ?
Tout s’est bien passé jusqu’à cette ligne de commande.
Merci !
Bonjour anaxiis,
il faut remplacer sftp-server.domaine.tld soit par l’adresse IP du serveur ou son FQDN
Merci de votre réponse ! N’étant pas connecté à internet, j’ai mis localhost à la place.
Cependant j’obtiens l’erreur :
« ssh: connect to host localhost port 22 : Connection refused
Couldn’t read packet : Connection reset by peer ».
(Et oui j’ai remis le port 22, pour d’abord essayer le port par défault)
pour être sûr que le serveur ssh tourne bien, donne moi le résultat de :
systemctl status sshd
netstat -lpt | grep ssh
et y a t-il un iptables de configuré ?
iptables -L
Bonsoir,
J’ai moi aussi le méme problème que anaxiis =/
Help Me ! :(
ssh: connect to host ***.**.**.*** port 22: Connection refused
Couldn’t read packet: Connection reset by peer
bjr chez moi quand je saisis le apt install sa me dit #commande_introuvable. quelqu’un peut m’aider ????
Bonjour,
si vous changer le port SSH sur le fichier config. (par ex : 7200)
sftp -P 7200 user@domaine.tld
Attention ! si vous utilisez la commande AllowUsers.
Le serveur refusera la connexion si l’utilisateur ftp n’est pas déclaré à la commande AllowUsers.
Bonjour,
Même lorsque je met la directive Match group sftp dans le sshd_config, les utilisateurs qui ne font pas parti du groupe sftp peuvent quand même se connecter
Bonjour, j’ai exactement le même problème que Tom.
Si une personne a la solution, merci de la partager.
everything working fine now thank you