SSH : utiliser le canal de communication (SFTP et SSHFS)
Table des matières
SSH avec le module openSSH est un programme informatique.
Il en résulte aussi que SSH est un protocole de connexion sécurisé.
Il est possible d'utiliser la connexion sécurisée SSH pour transférer des fichiers avec un client FTP, synchroniser des fichiers par exemple.
SFTP, tout comme SSH est un programme informatique mais aussi un protocole.
SFTP comme SecureShell File Transfert Protocol.
L'avantage du SFTP est la sécurisation du transfert de fichiers, puisque avec FTP, les données transitent en clair.
Seul un serveur SSH doit être installé sur la machine distante et seul le port 22 a besoin d'être ouvert.
Le logiciel FileZIlla supporte le SFTP. Pour le configurer, il faut ouvrir le gestionnaire de sites, et créer un nouveau site en précisant bien que l'on utilise le protocole SFTP
On renseigne l'hôte et le nom d'utilisateur.
Compléter le champ Port si le serveur SSH n'écoute pas sur son port par défaut, c'est à dire 22.
Voici un exemple de configuration, si on souhaite se connecter au site monsite.com avec l'utilisateur monutilisateur.
Par défaut, tout compte créé sur la machine à un accès SSH, s'il a un shell valide.
Il est possible de chrooter des utilisateurs dans leur /home, c'est à dire, les emprisonner dans leur dossier personnel, afin de ne pas parcourir l'arborescence du système.
Pour cela, on ajoute en toute fin du fichier /etc/ssh/sshd_config :
Match User user-sftp : Ce qui va suivre va concerner l'utilisateur user-sftp
ChrootDirectory %h : On l'emprisonne dans son dossier personnel (%h est une variable, mais on peut spécifier le dossier que l'on veut)
ForceCommand internal-sftp : L'utilisateur ne pourra pas se connecter en ssh sur le serveur, mais uniquement avec le service sftp.
SSHFS sert à monter sur son système de fichier local, un autre système de fichier distant, à travers une connexion SSH, le tout avec des droits utilisateur.
L'avantage est de manipuler les données distantes avec un gestionnaire de fichier, qu'il soit graphique (Dolphin ...) ou en ligne de commande.
C'est bien plus pratique que la commande scp couplée avec ssh ou rsync.
Il est nécessaire d'avoir un serveur SSH fonctionnel sur le serveur distant, et d'avoir le paquet sshfs ou sshfs-fuse installé sur le poste client.
S'assurer que le point de montage est créé et vérifier que les droits de ce dossier sont biens ceux de l'utilisateur qui va utiliser sshfs :
J'ai choisi de mettre le point de montage dans /media par "habitude" mais on peut créer un dossier où on souhaite, même dans son répertoire personnel.
Ensuite, on monte le dossier distant dans l'arborescence locale :
Si le serveur SSH n'écoute pas sur le port 22, utiliser le commutateur -p suivi du numéro de port (exemple avec 2345):
Après cette commande, le mot de passe de l'utilisateur du serveur sera demandé, sauf si le mécanisme clés privées/publiques est actif et fonctionnel.
Plus aucun fichier ne doit être ouvert dans le point de montage, sinon, il sera impossible de démonter.
Une fois ce prérequis validé, démonter le système de fichiers sshfs via :
S'assurer que les droits sont bons et que le point de montage existe. Il est plus pratique d'avoir un mécanisme de clés privées/publiques pour cette méthode ...
Ajouter une lige dans /etc/fstab de ce style :
Présentation
SSH avec le module openSSH est un programme informatique.
Il en résulte aussi que SSH est un protocole de connexion sécurisé.
Il est possible d'utiliser la connexion sécurisée SSH pour transférer des fichiers avec un client FTP, synchroniser des fichiers par exemple.
Autour de SSH, que pouvons-nous faire ?
SFTP, le FTP sur SSH
Présentation
SFTP, tout comme SSH est un programme informatique mais aussi un protocole.
SFTP comme SecureShell File Transfert Protocol.
L'avantage du SFTP est la sécurisation du transfert de fichiers, puisque avec FTP, les données transitent en clair.
Seul un serveur SSH doit être installé sur la machine distante et seul le port 22 a besoin d'être ouvert.
Configuration de FileZilla
Le logiciel FileZIlla supporte le SFTP. Pour le configurer, il faut ouvrir le gestionnaire de sites, et créer un nouveau site en précisant bien que l'on utilise le protocole SFTP
On renseigne l'hôte et le nom d'utilisateur.
Compléter le champ Port si le serveur SSH n'écoute pas sur son port par défaut, c'est à dire 22.
Voici un exemple de configuration, si on souhaite se connecter au site monsite.com avec l'utilisateur monutilisateur.
Chrooter un utilisateur
Par défaut, tout compte créé sur la machine à un accès SSH, s'il a un shell valide.
Il est possible de chrooter des utilisateurs dans leur /home, c'est à dire, les emprisonner dans leur dossier personnel, afin de ne pas parcourir l'arborescence du système.
Pour cela, on ajoute en toute fin du fichier /etc/ssh/sshd_config :
Code BASH :
Match User user-sftp
ChrootDirectory %h
ForceCommand internal-sftp
Match User user-sftp : Ce qui va suivre va concerner l'utilisateur user-sftp
ChrootDirectory %h : On l'emprisonne dans son dossier personnel (%h est une variable, mais on peut spécifier le dossier que l'on veut)
ForceCommand internal-sftp : L'utilisateur ne pourra pas se connecter en ssh sur le serveur, mais uniquement avec le service sftp.
SSHFS, système de fichiers sur SSH
Présentation
SSHFS sert à monter sur son système de fichier local, un autre système de fichier distant, à travers une connexion SSH, le tout avec des droits utilisateur.
L'avantage est de manipuler les données distantes avec un gestionnaire de fichier, qu'il soit graphique (Dolphin ...) ou en ligne de commande.
C'est bien plus pratique que la commande scp couplée avec ssh ou rsync.
Il est nécessaire d'avoir un serveur SSH fonctionnel sur le serveur distant, et d'avoir le paquet sshfs ou sshfs-fuse installé sur le poste client.
Monter un répertoire sur un serveur distant sur son arborescence locale
S'assurer que le point de montage est créé et vérifier que les droits de ce dossier sont biens ceux de l'utilisateur qui va utiliser sshfs :
Code BASH :
mkdir /media/serveur chown adrien:adrien /media/serveur
J'ai choisi de mettre le point de montage dans /media par "habitude" mais on peut créer un dossier où on souhaite, même dans son répertoire personnel.
Ensuite, on monte le dossier distant dans l'arborescence locale :
Code BASH :
sshfs utilisateur@serveur:/home/utilisateur /media/serveur
Si le serveur SSH n'écoute pas sur le port 22, utiliser le commutateur -p suivi du numéro de port (exemple avec 2345):
Code BASH :
sshfs -p 2345 utilisateur@serveur:/home/utilisateur /media/serveur
Après cette commande, le mot de passe de l'utilisateur du serveur sera demandé, sauf si le mécanisme clés privées/publiques est actif et fonctionnel.
Démonter le système de fichier
Plus aucun fichier ne doit être ouvert dans le point de montage, sinon, il sera impossible de démonter.
Une fois ce prérequis validé, démonter le système de fichiers sshfs via :
Code BASH :
fusermount -u /media/serveur
Utiliser sshfs dans le fstab (en mode noauto)
S'assurer que les droits sont bons et que le point de montage existe. Il est plus pratique d'avoir un mécanisme de clés privées/publiques pour cette méthode ...
Ajouter une lige dans /etc/fstab de ce style :
Code :
sshfs#utilisateur@serveur:/home/utilisateur /media/serveur fuse port=22,user,noauto,noatime 0 0