SSHFS

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page SSHFS and the translation is 98% complete.
Other languages:
Resources
This article has some todo items:
  • Ajouter instructions pour l’usage d’SSHFS avec plus d’environnements de bureaux.
  • De plus amples détails seraient utiles.

SSHFS (SSH File System, ou système de fichiers SSH en français) est un client shell sécurisé utilisé pour monter à distance des systèmes de fichiers localement. SSHFS utilise FUSE pour monter des systèmes de fichiers dans un emplacement dans lequel les utilisateurs peuvent facilement accéder, ainsi qu'accéder aux fichiers à travers le protocole SFTP.

Installation

Noyau

SSHFS se repose sur FUSE, donc ce dernier doit être activé dans le noyau.

KERNEL Enabling FUSE in the kernel
File systems  --->
   [*] FUSE (Filesystem in Userspace) support
Remarque
Lorsque une fonction intégré (non-modulaire) ou qu'un pilote est activé il faut se rappeler qu'une recompilation sera nécessaire et le nouveau noyau devra être chargé en mémoire (avec un redémarrage) avant que les changements prennent effets. Cette étape doit être complété avant de passer aux autres sections de cet article.

Drapeaux USE

Il n'y présentement pas de drapeaux USE de disponibles pour SSHFS.

Emerge

Utiliser la commande emerge pour demander à Portage d'installer net-fs/sshfs :

root #emerge --ask net-fs/sshfs

Configuration

Remarque
Si cela fonctionne immédiatement, il n'est pas nécessaire d'appliquer cette partie.

Il est possible que des permissions à ajouter soient nécessaires, ou le montage pourrait produire comme erreur "fuse: failed to open /dev/fuse: Permission denied" (NdT: fuse: échec d'ouverture de /dev/fuse: Permissions refusées). Revenir à cette section est encouragé si cela est nécessaire uniquement.

Si l'erreur ci-dessus est rencontré, d'abord créer un groupe pour les utilisateurs qui seront autorisés à utilisés SSHFS, puis ajouter les comptes qui s'en serviront, dans ce groupe :

root #groupadd crypto
root #usermod -aG crypto $UTILISATEUR

Si nécessaire, se reconnecter avec l'utilisateur, pour appliquer les nouvelles permissions du groupe [à celui-ci].

Maintenant créer le fichier /etc/udev/rules.d/60-fuse.rules et y ajouter le contenu suivant :

FILE /etc/udev/rules.d/60-fuse.rules
KERNEL=="fuse", NAME="%k", MODE="0666", GROUP="crypto"

Recharger le module fuse pour appliquer les changements :

root #modprobe -r fuse
root #modprobe fuse
root #ls -l /dev/fuse
crw-rw-rw- 1 root crypto 10, 229 Nov  8 22:29 /dev/fuse

Utilisation

Montage

Afin de se servir d'SSHFS, un démon SSH doit fonctionner en tâche de fond sur la machine distante, le sous-système sftp activé peut aussi être nécessaire et au moins un utilisateur doit être configuré pour pouvoir accéder à la machine via SSH.

Pour monter localement un répertoire distant, les bonnes informations de connexions sont nécessaires. Si aucun utilisateur n'est donné dans la ligne de commande, c'est l'utilisateur courant [et son nom de compte UNIX] qui seront utilisés par défaut. Par exemple, si l'utilisateur larry est celui d'actif sur le système et est celui qui lance la commande :

larry@exemple $sshfs hotedistant:/home/larry ~/montage_distant

Le nom d'utilisateur larry sera envoyé au système distant, donc les informations d'accès [tel que son mot de passe] pour accéder au compte distant nommé larry seront nécessaires. Après avoir entrée le mot de passe pour larry, cela montera le répertoire home distant de l'utilisateur [distant] larry vers le répertoire sur la machine locale, dans ~/remote_mount.

larry@exemple $sshfs larry@hotedistant:/home/larry ~/montage_distant

Pour changer d'utilisateur, insérer le nom de celui-ci avant l'adresse IP ou le nom de domaine. Par exemple, pour se connecter vers le système distant en utilisant l'utilisateur distant root et son mot de passe, utiliser :

user $sshfs root@hotedistant:hotedistant:/ ~/montage_distant

L'accès [au compte] root doit être activé sur le serveur [distant] pour que cela fonctionne.

Sudo

Si un utilisateur peut [utiliser] sudo sur l'hôte distant vers un autre utilisateur, il peut être possible d'accéder à des fichiers de la même manière que l'utilisateur sur l'hôte distant (si l'accès à sudo ne nécessite pas de mot de passe). Par exemple, si un utilisateur peut [lancer la commande] su pour se connecter à root sur l'hôte distant sans entrer de mot de passe, faire le montage avec :

user $sshfs -o sftp_server="/usr/bin/sudo /usr/lib64/misc/sftp-server" larry@hotedistant:/chemin/vers/système/distant /chemin/vers/montage/sshfs/local

Ces chemins sont valides pour une installation " par défaut " de Gentoo sur l'hôte distant, ceux-ci peuvent avoir besoin d'être changé si le serveur fonctionne sous une autre distribution.

Remarque
Cela n'est pas une méthode sécurisé d'accès à un serveur, de la prudence est recommandée.

Démontage

Pour démonter un répertoire avec SSHFS utiliser la commande fusermount avec l'option -u :

larry@exemple $fusermount -u /chemin/vers/répertoire/sshfs/local/monté

Options basés sur les permissions

Afin d'avoir un accès en lecture/écriture vers un répertoire distant monté [localement], les options allow_other et/ou allow_root peuvent être nécessaires. Les activer simplement comme vu ci-dessous (en remplaçant allow_other par allow_root, si cela vise root).

larry@exemple $sshfs -o allow_other larry@hotedistant:/chemin/vers/répertoire/distant /chemin/vers/pointdemontage/sshfs

Une autre possibilité, les options uid, gid et umask peuvent être utilisés pour accroître la finesse des permissions. Quand de multiples options sont utilisés en même temps, il faut utiliser une liste séparé par des espaces [blancs] après -o.

CODE options pour umask, uid et gid
-o umask=M
    set file permissions (octal)

<div lang="en" dir="ltr" class="mw-content-ltr">
-o uid=N
    set file owner
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
-o gid=N
    set file group
Remarque
L'utilisation de ces options peut produire en sortie une erreur, "fusermount3: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf" (NdT: "fuesrmount3: l'option allow_other est autorisé seulement si 'user_allow_other' est paramétré dans /etc/fuse.conf", en français). Dans ce cas, simplement décommenté la ligne "user_allow_other" dans le fichier et essayer de nouveau.

Automatiser la connexion

Pour les systèmes de fichiers distants qui doivent être couramment montés, il est utile d'automatiser le processus. L'automatisation peut être atteinte en utilisant une paire de clés publique/privé SSH combinées avec un mécanisme de montage distant de système de fichiers lors d'un évènement spécifique (connexion de l'utilisateur, ou l'amorçage du système par exemple).

La première étape est la mise en place d'une paire de clés SSH sur la machine locale et distante. Visiter l'article et la section concernant les connexions via SSH sans mot de passe pour de plus amples instructions sur comment paramétrer une paire de clés SSH. Une fois terminé, revenir à cet article.

Après qu'elles aient été créés et correctement configuré, déterminer l'évènement qui sera utilisé [comme déclencheur] pour démarrer la connexion automatiquement. Il est commun pour un système d'essayer de se connecter à un système de fichiers distant à la connexion d'un utilisateur ou l'amorçage [de l'ordinateur]. Le contrôle du montage via sshfs dépend du logiciel que l'utilisateur va implémenter dans leur environnement local. Il y a de multiples manières d'accomplir cette tâche.

fstab

sshfs peut être utilisé dans le fichier système /etc/fstab. Cela autorise les systèmes de fichiers à travers le réseau à se retrouver assigner à un montage local dans le système de fichiers. Les systèmes de fichiers utilisant sshfs requièrent des options légèrement différentes, ainsi il faut être sûr [de ce qui sera utilisé] en lisant le manuel [de mount] pour garantir que les options sont adéquates dans chaque cas. Un exemple de l'usage d'SSHFS dans [le fichier] fstab :

FILE /etc/fstabAjout d'SSHFS dans le fichier fstab
# Monte automatiquement ~/Musique à la connexion
sshfs#UTILISATEUR_SERVEUR@hotedistant:/REPSOURCE /home/UTILISATEUR/Musique fuse user,_netdev,idmap=user,transform_symlinks,identityfile=/home/UTILISATEUR/.ssh/id_rsa,allow_other,default_permissions,uid=1000,gid=1000 0 0

Connexion aux shells

La plupart des shells inclus un support pour les commandes qui s'exécuteront durant la (dé)connexion d'un utilisateur. Cette section procurera quelques exemples pour automatiser les connexions en utilisant des scripts shells.

Avant de commencer, il est nécessaire de connaître quel shell sera utilisé. Exécuter la commande suivante avec l'utilisateur [qui devra utiliser SSHFS] pour déterminer le bon shell à utiliser :

user $echo $SHELL

Réponses possibles :

  • /bin/bash pour bash
  • /bin/sh pour sh
  • /bin/tcsh pour tcsh (csh)
  • /bin/zsh pour zsh
Remarque
Pour de plus amples informations sur les shells disponibles, voir l'article Shell.
Bash

Lorsqu'un shell bash est utilisé, créer les fichiers ~/.bash_login et ~/.bash_logout dans le répertoire home de l'utilisateur [concerné] et ajouter la commande sshfs dans ceux-ci.

user $touch ~/.bash_login ~/.bash_logout

Montage à la connexion dans le shell :

FILE ~/.bash_loginAjout du montage via SSHFS à la connexion [de l'utilisateur] dans le shell bash
# Ajout du montage d'un répertoire distant à la connexion de l'utilisateur
sshfs larry@hotedistant:/chemin/vers/répertoire/distant /chemin/vers/pointdemontage/sshfs

Démonter [le répertoire distant] lors de la déconnexion du shell :

FILE ~/.bash_logoutAjout du démontage via SSHFS à la déconnexion [de l'utilisateur] du shell bash
# Ajouté pour démonter le répertoire distant à la déconnexion de l'utilisateur [du shell courant]
fusermount -u /chemin/vers/pointdemontage/sshfs
Sh
user $touch ~/.profile
FILE ~/.profileAjout du montage via SSHFS à la connexion [de l'utilisateur] dans le shell Sh
# Ajout du montage d'un répertoire distant à la connexion de l'utilisateur
sshfs larry@hotedistant:/chemin/vers/répertoire/distant /chemin/vers/pointdemontage/sshfs/local
Zsh
user $touch ~/.zlogin
FILE ~/.zloginAjout du montage via SSHFS à la connexion [de l'utilisateur] dans le shell Zsh
# Ajout du montage d'un répertoire distant à la connexion de l'utilisateur
sshfs larry@hotedistant:/chemin/vers/répertoire/distant /chemin/vers/pointdemontage/sshfs/local
Tcsh (Csh)
user $touch ~/.login
FILE ~/.loginAjout du montage via SSHFS à la connexion [de l'utilisateur] dans le shell tcsh ou csh
# Ajout du montage d'un répertoire distant à la connexion de l'utilisateur
sshfs larry@hotedistant:/chemin/vers/répertoire/distant /chemin/vers/pointdemontage/sshfs/local

Environnements de bureau

La plupart des environnements de bureau inclus une méthode pour démarrer automatiquement des programmes.

Openbox

Openbox utilise le fichier autostart qui se trouve dans le répertoire home de chaque utilisateur.

FILE ~/.config/openbox/autostartAjout du montage SSHFS dans le fichier autostart d'Openbox
# Ajout du montage d'un répertoire distant à la connexion de l'utilisateur
sshfs larry@hotedistant:/chemin/vers/répertoire/distant /chemin/vers/pointdemontage/sshfs &
Remarque
Il est important d'inclure le caractère & (esperluette) à la fin des commandes dans le fichier autostart d'Openbox.

Voir aussi

  • CurlFtpFS — allows for mounting an FTP folder as a regular directory to the local directory tree.
  • SCP — an interactive file transfer program, similar to the copy command, that copies files over an encrypted SSH transport.
  • SSH — the ubiquitous tool for logging into and working on remote machines securely.
  • SFTP — an interactive file transfer program, similar to FTP, which performs all operations over an encrypted SSH transport.

Ressources externes