15

Mettre en place un serveur SFTP sous Debian 8

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
  • Editer le fichier de configuration du serveur SSH :
  • nano /etc/ssh/sshd_config
  • Configuration de base su serveur SSH :
    • Changer le port d’écoute 22 par autre de votre choix :
    • Port 666
    • Interdire les connexion à partir du compte root (Attention avant d’interdire root, assurez vous d’avoir un autre utilisateur, qui pourra se connecter en SSH sur le serveur) :
    • PermitRootLogin no
  • Configuration du SFTP :
  • Ajouter ces lignes à la fin du fichier de configuration :

    Subsystem sftp internal-sftp
             Match group sftp
             ChrootDirectory /home/%u
             X11Forwarding no
             AllowTcpForwarding no
  • Quiter en enregistrer les modifications à l’aide de la combinaison de touche : Ctrl+x et répondre Y.
  • Explication des options du SFTP :
    • 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

  • Ajout du groupe sftp :
  • addgroup sftp
  • Créer le répertoire pour l’utilisateur « root » :
  • mkdir -p /home/fred
  • Ajout d’un utilisateur sans accès shell, avec son répertoire personnel et ajouter dans le groupe sftp :
  • useradd -s /bin/false -d /home/fred -g sftp fred
  • Définir un mot de passe pour ce nouveau utilisateur :
  • passwd fred
  • Attribution des droits root sur le répertoire de l’utilisateur fred :
  • chown root:root /home/fred/
  • Changer les droits du répertoire :
  • Attention ici, seuls les droits en écriture peuvent être attribués à root et uniquement à lui !

    chmod -R 770 /home/fred/
  • Renommer le répertoire utilisateur :
  • usermod -d / fred

Test de connexion au serveur SFTP

  • Activation du serveur SFTP :
  • systemctl restart ssh
  • Test de connexion :
    • En ligne de commande :
    • sftp fred@sftp-server.domaine.tld
    • En interface graphique avec l’aide du logiciel Filezilla, attention de bien mettre le protocole sftp:// :
    • fillezilla-sftp

Avec l’aide de debian-administration.org

Partager l'article :





fred

Administrateur Système autodidacte et utilisateur au quotidien de GNU/Linux (Debian, Ubuntu, Manjaro et un peu de CentOS).

15 Comments

  1. 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 ?

  2. 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…

  3. 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.

  4. 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?

  5. 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?

  6. 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.

  7. la commande « chown root:root /home/fred » est pour chrooter l’utilisateur

  8. fred,

    « Attribution des droits sur le répertoire de l’utilisateur fred » :
    chown root:root /home/fred/

  9. 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 !

  10. Bonjour anaxiis,
    il faut remplacer sftp-server.domaine.tld soit par l’adresse IP du serveur ou son FQDN

  11. 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)

  12. 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

  13. 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

  14. bjr chez moi quand je saisis le apt install sa me dit #commande_introuvable. quelqu’un peut m’aider ????

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *