SSHFS
- 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.
File systems --->
[*] FUSE (Filesystem in Userspace) support
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
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 :
/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.
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.
-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
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 :
/etc/fstab
Ajout 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
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 :
~/.bash_login
Ajout 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 :
~/.bash_logout
Ajout 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
~/.profile
Ajout 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
~/.zlogin
Ajout 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
~/.login
Ajout 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.
~/.config/openbox/autostart
Ajout 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 &
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.