web-dev-qa-db-fra.com

Impossible de monter le répertoire de base de l'utilisateur SSHFS

J'essaie de configurer un serveur de répertoires de départ centralisé via sshfs et pam-mount.

Actuellement, je suis bloqué à ce stade:

Lorsque vous essayez de monter le répertoire de base distant, sshfs reste bloqué:

d_inevitable@laptop:~$ sshfs -o nonempty,debug server: .
Fuse library version: 2.9.0
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0

Il gèle à ce stade.

Cela semble être dû au fait que le répertoire de base comprend ~/.ssh. Donc, quand j'essaie sshfs -o nonempty server:.ssh .ssh, la même chose se produit.

Je suppose que Fuse initialise le montage, mais ssh a besoin de quelque chose de son répertoire de configuration pour essayer de le lire. Le fusible ne fera que bloquer cette lecture, entraînant un blocage.

De quel genre de choses les sshfs ont-ils besoin de ~/.ssh?

J'ai essayé de supprimer toutes les autorisations de lecture/écriture de ~/.ssh puis de monter sur un autre répertoire. Cela a bien fonctionné. La sortie de débogage se plaint uniquement d'écrire sur .ssh/known_hosts.

2
d_inevitable

Vous avez raison, Fuse lance d'abord le montage, puis le processus ssh. Cela pose un problème car ssh lit par défaut les fichiers ~/.ssh/ssh_config, ~/.ssh/known_config, ~/.ssh/id_* de l'utilisateur home. Ce comportement peut être changé:

  1. ~/.ssh/ssh_config est le fichier de configuration par utilisateur par défaut. Un autre fichier de configuration par utilisateur peut être spécifié à l'aide de l'option -F, ou en utilisant -F /dev/null pour ne spécifier aucun fichier de configuration par utilisateur.
  2. ~/.ssh/known_config est utilisé pour stocker et vérifier les clés de l'hôte. Vous pouvez utiliser -o UserKnownHostsFile=/dev/null et ajouter manuellement la clé de l'hôte à /etc/ssh/ssh_known_hosts ou utiliser -o StrictHostKeyChecking=no.
  3. Les fichiers ~/.ssh/id_* sont des fichiers d'identité utilisés par défaut pour l'authentification du client. Si vous souhaitez vous authentifier à l'aide d'un fichier d'identité, vous devez le conserver en dehors du répertoire de base et utiliser -o IdentitiesOnly=yes -o IdentityFile=<path to private key>. Sinon, vous pouvez vous authentifier de manière interactive si vous utilisez -o IdentitiesOnly=yes -o IdentityFile=/dev/null -o PubkeyAuthentication=no.

Par exemple, pour monter chez vous à l’aide de sshfs, s’authentifier à l’aide d’un mot de passe, sans vérification de la clé de l’hôte, exécutez

sshfs user@server: ~/ -o nonempty -F /dev/null -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o IdentityFile=/dev/null -o PubkeyAuthentication=no
1
Ishan Arora