GNU/Linux >> Tutoriels Linux >  >> Linux

Comment spécifier le fichier de clé pour sshfs ?

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.


Linux
  1. Comment ajouter la sortie à un fichier ?

  2. Comment rediriger la sortie de system() vers un fichier ?

  3. Comment trouver le gestionnaire de fichiers par défaut ?

  4. Comment spécifier une clé privée lors du décryptage d'un fichier à l'aide de GnuPG ?

  5. Quelle est la différence entre le fichier authorized_keys et le fichierknown_hosts pour SSH ?

Comment télécharger un fichier sur le serveur

Comment ajouter une clé publique SSH au serveur

Comment changer le nom d'hôte du serveur dans Ubuntu

Comment changer le fuseau horaire sur le serveur Ubuntu 18.04 ?

Comment installer et configurer le pare-feu CSF pour Linux

Comment spécifier le nom d'hôte pour le conteneur en cours d'exécution ?