J'utilise sshfs
pour monter un dossier avec des projets python sur ssh sur mon ~/
répertoire.
$ mkdir -p ~/mount/my-projects
$ sshfs [email protected]:/home/user/my-projects ~/mount/my-projects
Je peux exécuter la plupart des commandes comme on pouvait s'y attendre:
$ ls ~/mount/my-projects
some-python-project
Mais si j'essaie de faire quoi que ce soit avec Sudo
, cela échoue avec l'autorisation refusée:
$ Sudo ls ~/mount/my-projects
ls: cannot access /home/user/mount/my-projects: Permission denied
Ce que j'essaie réellement d'accomplir, c'est de tester un script d'installation du package python sur ma machine locale:
$ cd ~/mount/my-projects/some-python-project
$ Sudo python setup.py install
Je pense que vous devez utiliser le allow_other
option pour sshfs. Pour ce faire, vous devez l'appeler avec Sudo, comme suit: -
Sudo sshfs -o allow_other user@myserver:/home/user/myprojects ~/mount/myprojects
Sans cette option, seul l'utilisateur qui a exécuté sshfs peut accéder au montage. Il s'agit d'une restriction de fusible. Plus d'informations sont disponibles en tapant man Fuse
.
Vous devez également noter que (sur Ubuntu au moins) vous devez être membre du groupe 'Fuse', sinon la commande ci-dessus se plaindra de ne pas pouvoir accéder à /etc/Fuse.conf
lorsqu'il a été exécuté sans 'Sudo'.
sshfs
est un processus utilisateur, il n'est donc pas nécessaire de l'exécuter avec Sudo
.
Si vous l'exécutez en tant que Sudo et utilisez l'authentification par clé SSH, la clé sera recherchée sous /root/.ssh
et pas sous votre utilisateur /home/myuser/.ssh
.
De même pour ~/.ssh/config
fichier que sshfs
est capable d'utiliser.
Si tu as un ~/.ssh/config
comme:
Host remotehost
HostName 111.22.33.44
User root
Port 1234
IdentityFile ~/.ssh/id_rsa
alors vous pouvez monter votre hôte distant en tant qu'utilisateur normal avec:
sshfs remotehost: local_dir
Pour exécuter sous root, vous pouvez ajouter -o IdentityFile /home/myuser/.ssh/id_rsa
à la commande 'raw' sshfs
, ou pour créer /root/.ssh/config
avec le chemin complet de la clé SSH de votre utilisateur:
Host remotehost
HostName 111.22.33.44
User root
Port 1234
IdentityFile /home/myuser/.ssh/id_rsa
Maintenant sshfs remotehost: local_dir
fonctionnera également sous root.
Avec votre
.ssh/config
en place, vous pouvez copier des dossiers entiers entre les hôtes avec (distant vers local)scp -r remotehost:remotedir localdir
ou (local à distant)scp -r localdir remotehost:remotedir
, donc pour une seule opération ponctuelle, vous n'aurez peut-être même pas besoin desshfs
.Si vous utilisez un chemin d'accès distant relatif comme dans
remotehost:remotedir
puisremotedir
sera relatif au dossier personnel de l'utilisateur, c'est-à-direremotehost:remotedir
est équivalent àremotehost:/home/myuser/remotedir
Ce qui a résolu le problème pour moi, c'est d'ajouter le allow_other
option à la commande comme ceci:
$ sshfs -o allow_other [email protected]:/home/user/my-projects ~/mount/my-projects
alors vous pourriez obtenir l'erreur:
l'option allow_other n'est autorisée que si 'user_allow_other' est défini dans /etc/Fuse.conf pour résoudre cette tête dans /etc/Fuse.conf avec votre éditeur de texte préféré et décommenter (supprimer le # derrière)
user_allow_other
Si cela résout le problème et que vous pouvez exécuter sshfs
avec succès, tant mieux! Sinon, vous devriez essayer d'ajouter votre utilisateur au groupe Fuse par cette commande:
$ usermod -a -G mark Fuse
et s'il se produit une erreur indiquant que le groupe de fusibles n'existe pas, vous pouvez facilement créer ce groupe en:
$ Sudo groupadd mynewgroup