SSHFS (Français)

État de la traduction:
Cet article est la version francophone de
SSHFS
. Date de la dernière traduction: 2022-10-03. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Related articles
SCP and SFTP
SFTP chroot
Pure-FTPd
sftpman
SSHFS
est un client de système de fichiers basé sur
FUSE
pour monter des répertoires distants via une connexion
Secure Shell
.
Note
Ce projet a été archivé par ses développeurs et n'est plus développé. Une alternative possible est la fonction mount de
rclone
.
Installation
Installez
le paquet
sshfs
.
Astuce
Si vous avez souvent besoin de monter des systèmes de fichiers sshfs, vous pouvez utiliser un assistant sshfs, tel que
qsshfs
AUR
[
broken link
: package not found]
,
sftpman
,
sshmnt
AUR
ou
fmount.py
.
Vous pouvez vouloir utiliser
Google Authenticator
qui fournit une sécurité supplémentaire comme dans l'authentification en deux étapes.
Les
clés SSH
peuvent être utilisées pour remplacer l'authentification traditionnelle par mot de passe.
Montage
Pour pouvoir monter un répertoire, l'utilisateur SSH doit pouvoir y accéder. Appelez
sshfs
pour monter un répertoire distant :
$ sshfs
[user@]host :[dir] mountpoint [options]
Par exemple :
$ sshfs myuser@mycomputer:/remote/path /local/path -C -p 9876
Ici,
-p 9876
spécifie le numéro de port et
-C
active la compression. Pour plus d'options, consultez la section
#Options
.
S'il n'est pas spécifié, le chemin distant prend par défaut le répertoire d'origine de l'utilisateur distant. Les noms d'utilisateurs et les options par défaut peuvent être prédéfinis sur une base hôte par hôte dans
~/.ssh/config
pour simplifier l'utilisation de
sshfs
. Pour plus d'informations, consultez
OpenSSH (Français)#Utilisation du client
.
SSH demandera le mot de passe, si nécessaire. Si vous ne voulez pas taper le mot de passe plusieurs fois par jour, consultez
SSH keys
.
Démontage
Pour démonter le système distant :
$ fusermount3 -u
mountpoint
Exemple :
$ fusermount3 -u /local/path
Options
sshfs
peut convertir automatiquement les identifiants des utilisateurs locaux et distants. Utilisez l'option
idmap=user
pour convertir l'UID de l'utilisateur qui se connecte en l'utilisateur distant
myuser
(le GID reste inchangé) :
$ sshfs
myuser
@
mycomputer
:
/remote/path /local/path
-o idmap=user
Si vous avez besoin de plus de contrôle sur la traduction des UID et GID, consultez les options
idmap=file
,
uidfile
et
gidfile
.
Une liste complète des options se trouve dans
sshfs(1)
.
Chrooting
Vous pouvez vouloir restreindre un utilisateur spécifique à un répertoire spécifique sur le système distant. Ceci peut être fait en éditant
/etc/ssh/sshd_config
:
/etc/ssh/sshd_config
.....
Match User
someuser
ChrootDirectory
/chroot/%u
ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no
.....
Note
Le répertoire chroot
doit
appartenir à root, sinon vous ne pourrez pas vous connecter.
Consultez également
SFTP chroot
. Pour plus d'informations, consultez la page de manuel
sshd_config(5)
pour
Match
,
ChrootDirectory
et
ForceCommand
.
Montage automatique
Le montage automatique peut se faire au démarrage ou à la demande (lors de l'accès au répertoire). Dans les deux cas, la configuration se fait dans le fichier
fstab
.
Note
N'oubliez pas que le montage automatique est effectué par l'utilisateur root, vous ne pouvez donc pas utiliser les hôtes configurés dans
.ssh/config
de votre utilisateur normal.
Pour laisser l'utilisateur root utiliser une clé SSH d'un utilisateur normal, spécifiez son chemin complet dans l'option
IdentityFile
.
Surtout
, utilisez chaque montage sshfs au moins une fois manuellement
en root
sur la machine cliente afin que la signature de l'hôte soit ajoutée au fichier
/root/.ssh/known_hosts
du client. Cela peut également être fait manuellement en ajoutant une ou plusieurs clés publiques d'hôte du serveur SSH (les fichiers
/etc/ssh/ssh_host_*key.pub
) à
/root/.ssh/known_hosts
.
À la demande
Avec systemd, le montage à la demande est possible en utilisant les entrées
/etc/fstab
.
Exemple :
user
@
host
:
/remote/path /local/path
fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/
user
/.ssh/id_rsa,allow_other,reconnect 0 0
Les options de montage importantes ici sont
noauto,x-systemd.automount,_netdev
.
noauto
indique qu'il ne faut pas monter au démarrage.
x-systemd.automount
fait la magie à la demande
_netdev
indique qu'il s'agit d'un périphérique réseau et non d'un périphérique de type bloc (sans cela, des erreurs "No such device" peuvent se produire).
Note
Après avoir modifié
/etc/fstab
,
rechargez
la configuration de systemd et les services requis, qui peuvent être trouvés en exécutant
systemctl list-unit-files --type automount
.
Au démarrage
Exemple d'utilisation de sshfs pour monter un système de fichiers distant via
/etc/fstab
.
user
@
host
:
/remote/path /local/path
fuse.sshfs defaults,_netdev 0 0
Prenons par exemple la ligne
fstab
suivante
llib@192.168.1.200:/home/llib/FAH /media/FAH2 fuse.sshfs defaults,_netdev 0 0
Ce qui précède fonctionnera automatiquement si vous utilisez une clé SSH pour l'utilisateur. Consultez
Using SSH Keys
.
Si vous voulez utiliser sshfs avec plusieurs utilisateurs, ajoutez l'option suivante :
user@domain.org:/home/user /media/user fuse.sshfs defaults,
allow_other
,_netdev 0 0
Encore une fois, il est important de définir l'option de montage
_netdev
pour s'assurer que le réseau est disponible avant d'essayer de monter.
Accès utilisateur sécurisé
Lors du montage automatique via
fstab
, le système de fichiers sera généralement monté par root. Par défaut, cela produit des résultats indésirables si vous souhaitez accéder en tant qu'utilisateur ordinaire et limiter l'accès aux autres utilisateurs.
Un exemple de configuration de point de montage :
user
@
host
:
/remote/path /local/path
fuse.sshfs noauto,x-systemd.automount,_netdev,user,idmap=user,follow_symlinks,identityfile=/home/
user
/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0
Résumé des options pertinentes :
allow_other
- Autorise d'autres utilisateurs que le monteur (i.e. root) à accéder au partage.
default_permissions
- Autorise le noyau à vérifier les permissions, c'est-à-dire à utiliser les permissions réelles sur le système de fichiers distant. Cela permet d'interdire l'accès à tout le monde autrement accordé par
allow_other
.
uid
,
gid
- définit la propriété déclarée des fichiers à des valeurs données ;
uid
est l'ID numérique de votre utilisateur,
gid
est l'ID numérique du groupe de votre utilisateur.
Dépannage
Checklist
Lisez d'abord
OpenSSH (Français)#Checklist
. Les autres points à vérifier sont :
Votre login SSH envoie-t-il des informations supplémentaires depuis le fichier
/etc/issue
du serveur, par exemple ? Cela peut perturber SSHFS. Vous devriez désactiver temporairement le fichier
/etc/issue
du serveur :
$ mv /etc/issue /etc/issue.orig
Gardez à l'esprit que la plupart des articles de dépannage liés à SSH que vous trouverez sur le web ne sont pas liés à systemd. Souvent, les définitions de
/etc/fstab
commencent par erreur par
sshfs#
user@host:/mnt/server/directory ... fuse ...
au lieu d'utiliser la syntaxe
user@host:/mnt/server/directory ... fuse.
sshfs
...
x-systemd
, ...
Vérifiez que le propriétaire du répertoire source du serveur et de son contenu appartient à l'utilisateur du serveur.
$ chown -R
user_s
: /mnt/servers/directory
L'ID utilisateur du serveur peut être différent de celui du client. Évidemment, les deux noms d'utilisateur doivent être identiques. Il suffit de s'occuper des ID utilisateur du client. SSHFS traduira l'UID pour vous avec les options de montage suivantes :
uid=
USER_C_ID
,gid=
GROUP_C_ID
.
Vérifiez que le point de montage cible du client (directory) appartient à l'utilisateur du client. Ce répertoire doit avoir le même ID utilisateur que celui défini dans les options de montage de SSHFS.
$ chown -R
user_c
: /mnt/client/directory
Vérifiez que le point de montage (directory) du client est vide. Par défaut, vous ne pouvez pas monter des répertoires SSHFS sur des répertoires non vides.
Réinitialisation de la connexion par le pair
Si vous essayez d'accéder au système distant avec un nom d'hôte, essayez d'utiliser son adresse IP, car il peut s'agir d'un problème de résolution de nom de domaine. Assurez-vous d'éditer
/etc/hosts
avec les détails du serveur.
Assurez-vous que votre utilisateur peut se connecter au serveur (surtout si vous utilisez
AllowUsers
).
Assurez-vous que
Subsystem sftp /usr/lib/ssh/sftp-server
est activé dans
/etc/ssh/sshd_config
sur le système distant.
Si vous utilisez un nom de clé autre que celui par défaut et que vous le transmettez sous la forme
-i .ssh/my_key
, cela ne fonctionnera pas. Vous devez utiliser
-o IdentityFile=/home/
user
/.ssh/
my_key
, avec le chemin complet de la clé.
Si votre
/root/.ssh/config/
est un lien symbolique, vous obtiendrez également cette erreur. Consultez
ce sujet sur les erreurs de serveur
.
Ajout de l'option
sshfs_debug
. (comme dans
sshfs -o sshfs_debug
user
@
server
...
) peut aider à résoudre le problème.
Si cela ne révèle rien d'utile, vous pouvez également essayer d'ajouter l'option
debug
.
Si vous essayez d'accéder par sshfs à un routeur fonctionnant sous DD-WRT ou autre, il existe une solution
ici
. (Notez que l'option
-osftp_server=/opt/libexec/sftp-server
peut être utilisée pour la commande sshfs au lieu de patcher dropbear).
Si vous ne consultez ce message qu'au démarrage, il se peut que systemd tente d'effectuer un montage avant qu'une connexion réseau ne soit disponible. L'activation du
wait-online service
approprié pour votre gestionnaire de réseau résout ce problème.
Ancien fil de discussion du forum :
sshfs : Connexion réinitialisée par un pair
.
Note
Lorsque vous fournissez plus d'une option pour sshfs, elles doivent être séparées par des virgules. Par exemple :
sshfs -o sshfs_debug,IdentityFile=
/path/to/key
user
@
server
...
).
L'hôte distant s'est déconnecté
Si vous recevez ce message directement après avoir essayé d'utiliser
sshfs
:
Assurez-vous d'abord que la machine
distante
a installé
sftp
! Sinon, cela ne fonctionnera pas.
Ensuite, vérifiez que le chemin du
Subsystem sftp
dans
/etc/ssh/sshd_config
sur la machine distante est valide.
Problèmes de montage fstab
Pour obtenir une sortie de débogage verbeuse, ajoutez ce qui suit aux options de montage :
ssh_command=ssh\040-vv,sshfs_debug,debug
Note
Ici,
\040
représente un espace que fstab utilise pour séparer les champs.
Pour pouvoir exécuter
mount -av
et consulter la sortie de débogage, supprimez les éléments suivants :
noauto,x-systemd.automount
Certains répertoires sont vides
Par défaut, sshfs ne prend pas en charge les liens symboliques. Si ces répertoires étaient des liens symboliques, utilisez :
$ sshfs
user
@
host
:
/remote/path /local/path
-o follow_symlinks
Fichiers non rafraîchis
Si vous consultez du vieux contenu sur le serveur distant, pensez à utiliser l'option
dir_cache=no
:
$ sshfs
user
@
host
:
/remote/path /local/path
-o dir_cache=no
Transfert limité sur un réseau rapide
Si vous observez un transfert inférieur aux capacités de votre réseau et une utilisation élevée du CPU sur la partie d'où les fichiers sont copiés, désactivez la compression (supprimez l'option
-C
ou définissez
-o compression=no
).
Voir aussi
How to mount chrooted SSH filesystem
, avec une attention particulière aux questions de propriétaires et de permissions.