Notez cette option :
-o SSHOPT=VAL options ssh (voir man ssh_config)
Et si vous regardez man ssh_config
, il existe une option pour définir le chemin d'accès à votre fichier de clé privée, appelé IdentityFile
, vous pouvez donc faire ceci :
sshfs -oIdentityFile=/abs/path/to/id_rsa server: path/to/mnt/point
Le chemin d'accès au fichier d'identité doit être un chemin absolu.
En principe, cela fonctionne comme ceci (en tant que root, ou utilisez sudo
) :sshfs -o default_permissions,nonempty,IdentityFile=/home/USER/.ssh/id_rsa [email protected]:PATH /mnt/mountpoint
Remplacer USER
avec l'utilisateur qui est dans le authorized_keys
fichier du serveur, SERVER
avec le nom du serveur (ou IP, comme 192.168.0.11), SRVUSER
avec l'utilisateur sur le serveur (par exemple root, ce qui n'est pas recommandé mais possible et parfois nécessaire ; configurez votre /etc/ssh/sshd_config
sur le serveur correctement pour cela, c'est-à-dire les directives PermitRootLogin
et PasswordAuthentication
). Remplacez également /mnt/mountpoint
en conséquence.
L'option -o nonempty
permet de monter /mnt/mountpoint lorsque ce répertoire n'est pas vide. Je dois l'utiliser car je garde le fichier .unmounted
dans ce répertoire pour voir s'il est monté ou non, donc si test -e /mnt/mountpoint/.unmounted
renvoie un résultat réussi (c'est-à-dire que le fichier .unmount existe dans /mnt/mountpoint), il n'est pas monté.
Un exemple concret :
- nom du serveur "homeserver"
- monter le répertoire /home sur le serveur
- mon point de montage sur le système local est /mnt/homeserver
- l'utilisateur "steve" a la clé privée
ssh [email protected]
en tant qu'utilisateur steve a travaillé.
sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa [email protected]:/home /mnt/homeserver
(en tant que root)
Cela n'a pas fonctionné , j'ai le message d'erreur :read: Connection reset by peer
Solution : Obtenez une sortie plus détaillée en ajoutant -o debug
.
# sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa,debug
[email protected]:/home /mnt/homeserver
FUSE library version: 2.9.8
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT0123
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:2
ECDSA host key for homeserver has changed and you have requested strict checking.
Host key verification failed.
read: Connection reset by peer
Et du coup c'est beaucoup plus facile à réparer. Parce que les clés sshd ont été recréées depuis la dernière session mais /root/.ssh/known_hosts
sur le système local a toujours les anciennes clés - cela ne fonctionne pas. La solution, dans mon cas, était simplement de supprimer la ligne commençant par homeserver
à partir de /root/.ssh/known_hosts
en utilisant un éditeur (comme nano
). Maintenant, le montage avec sshfs fonctionne. Au premier montage la nouvelle clé doit être acquittée :
# mount /mnt/homeserver
The authenticity of host 'homeserver (192.168.0.11)' can't be established.
ECDSA key fingerprint is SHA256:aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsS/1234.
Are you sure you want to continue connecting (yes/no)? yes
BTW, c'est la ligne dans /etc/fstab
:
[email protected]:/home /mnt/homeserver fuse.sshfs noauto,nonempty,default_permissions,IdentityFile=/home/steve/.ssh/id_rsa 0 0
Donc, même s'il s'agit d'autre chose, essayez -o debug
première. Cela aidera énormément à trouver la panne.