sshfs demande toujours le mot de passe dans fstab?

20

J'essaie d'entrer un montage sshfs dans / etc / fstab avec la ligne suivante:

sshfs#[email protected]:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other 0 0

Pour que ce volume soit monté au démarrage. Après le démarrage, rien ne se passe, mais lorsque j'utilise la commande sudo mount -a, on me demande toujours le mot de passe. J'ai configuré des clés SSH et les ai transférées sur l'ordinateur à 192.168.0.2, et je peux me connecter à ssh normal sans mot de passe. Comment puis-je empêcher le fusible de demander mon mot de passe afin que le volume puisse être monté automatiquement au démarrage?

Si cela peut aider, j'essaie de me connecter à un serveur domestique exécutant Debian à partir d'un ordinateur portable exécutant Arch Linux. Merci

semi-sérieux
la source

Réponses:

13

L'authentification par clé ne peut fonctionner que si le sshprocessus peut trouver votre clé. Vous avez probablement votre clé dans votre répertoire personnel; mais vous n'avez jamais dit sshfsoù chercher une clé. Au démarrage, il monterait roottous les systèmes de fichiers, donc la clé doit être dans /root/.sshou référencée dans /root/.ssh/config.

Je recommande de monter le système de fichiers après vous être connecté et en tant que votre propre utilisateur. Mettez ceci dans un script qui est exécuté lorsque vous vous connectez:

ssh-add ~/.ssh/name_of_key.id_rsa
sshfs homeserver:/media/usb0 ~/exthd

Mettez un alias appelé homeserverdans votre ~/.ssh/config:

Host homeserver
HostName 192.168.0.2
User oli
Gilles 'SO- arrête d'être méchant'
la source
Ahh, c'est une meilleure façon de le faire, je n'ai pas pensé à le mettre dans mon script de connexion. Merci!
semiserious
Soyez prudent en utilisant ~dans le point de montage. Si vous utilisez une icône de lanceur sur le panneau pour exécuter la commande au lieu d'un terminal, le ~peut ne pas être évalué comme /home/et la commande échouera.
Nick
@Nick Si vous utilisez une interface graphique, elle peut avoir un outil dédié au montage automatique. Si vous suivez ma réponse, vous devez mettre les deux commandes dans un script shell; l'icône du lanceur exécuterait ce script.
Gilles 'SO- arrête d'être méchant'
10

J'ai pu faire monter sshfs via fstab avec Ubuntu 14.04 en utilisant la syntaxe suivante en tant qu'utilisateur standard (notez que tout dans CAPS est une variable à remplir):

USER@HOST:/REMOTE_DIR /LOCAL_DIR fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID,gid=USER_GID 0 0

Il s'agit d'une combinaison des informations trouvées ici /superuser/669287/automount-sshfs-using-fstab-without-mount-a et en ajoutant le delay_connect à partir d'ici /ubuntu/ 326977 / sshfs-n'est-pas-monté-automatiquement-au-démarrage-malgré-etc-fstab-configuration .

J'ai utilisé ce tutoriel pour obtenir mon USER_ID et USER_GID: https://kb.iu.edu/data/adwf.html

Pour trouver l'UID ou le GID d'un utilisateur sous Unix, utilisez la commande id. Pour trouver l'UID d'un utilisateur spécifique, à l'invite Unix, entrez:

id -u username

Remplacez le nom d'utilisateur par le nom d'utilisateur approprié de l'utilisateur. Pour trouver le GID d'un utilisateur, à l'invite Unix, entrez:

id -g username

De plus, si vous voulez un tutoriel complet, il sera publié sur https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/

variuxDavid
la source
Ce lien: variux.com/blog/?p=161 semble ne plus fonctionner ...
Christian Casutt
@ChristianMuggli merci pour votre commentaire. J'ai mis à jour l'adresse complète du didacticiel. Cependant, je n'ai pas testé le tutoriel depuis longtemps. variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04
variuxDavid
5

J'ai eu le même problème.

J'avais précédemment configuré les clés ssh via le ssh-keygenpuisssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

ssh a bien fonctionné sans me demander de mot de passe, donc je ne savais pas pourquoi sshfs voulait toujours le mot de passe ...

C'est-à-dire,

ssh [email protected] 

a bien fonctionné, mais sshfs a toujours demandé un mot de passe quand j'ai tapé

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

Comme Gilles l'a expliqué ci-dessus, sshfscherchait dans le répertoire racine les clés nécessaires.

Par conséquent, j'ai résolu cela en copiant simplement les fichiers id_rsa et id_rsa.pub du dossier .ssh caché de mon dossier personnel vers le dossier .ssh de la racine, c'est-à-dire

cp /home/pi/.ssh/id_rsa /root/.ssh/
cp /home/pi/.ssh/id_rsa.pub /root/.ssh/

Ensuite, taper ce qui suit a fonctionné sans me déranger pour un mot de passe:

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other
CMP
la source
C'est vraiment très mauvais du point de vue de la sécurité. Mieux vaut créer un jeu de clés distinct pour root et l'ajouter également à authorized_keys. Vous ne devez jamais copier de clés privées.
Christian Wolf
3

Si vous voulez qu'il démarre sans mot de passe, vous devrez créer une clé ssh publique / privée sans mot de passe. Ce n'est pas recommandé, mais vous pouvez au moins protéger ces fichiers avec un chmod 400utilisateur root.

Après cela, comme d'habitude, vous devrez copier la clé publique sur le point de montage:

ssh-copy-id -i my_new_key.pub [email protected]

Et vous devrez dire à sshfs d'utiliser cette clé.

[email protected]:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other,'IdentityFile /path/to/private/key' 0 0
Coren
la source
2
SSHFS version 2.8 fuse: unknown option 'SSHOPT=IdentityFile /home/ravi/.ssh/id_boxy_rsa'
Tom Hale
1
@TomHale au lieu de ,SSHOPT='IdentityFile /path/to/private/key'cela est tout simplement,IdentityFile /path/to/private/key
pulkitsinghal
2

Fonctionne parfaitement pour moi sur Debian 8.2 en ajoutant la ligne suivante à fstab:

user@hostname:/path/to/localmountpoint /path/to/remotemountpoint fuse.sshfs _netdev,user,port=(if_not_22),idmap=user,transform_symlinks,identityfile=/home/user/.ssh/id_rsa,allow_other,default_permissions,uid=user_id,gid=group_id 0 0

Le nom d'hôte indique que l'utilisateur du serveur distant (dossier à partir duquel monter) est le même localement et à distance. (Plus facile)

Assurez-vous que vous avez créé localement la clé ssh pour l'utilisateur utilisant ssh-keygenet utilisez ssh-copy-idpour copier la clé sur le serveur distant (nom d'hôte).

Vous pouvez trouver user_idet group_idpour l'utilisateur dans le serveur local /etc/passwd.

Assurez-vous également que l'utilisateur dispose d'autorisations de lecture / écriture dans le dossier path/to/localmountpoint.

LincolnP
la source
2

En fait, vous pouvez monter SSHFS sans clé publique au démarrage en utilisant l'option password_stdin, mais pas avec fstab.

Ce dont vous avez besoin est un petit fichier script et cron.

Veuillez noter que la clé publique est toujours un meilleur choix. Mais parfois, les clés publiques ne fonctionnent pas (j'ai eu ce problème plusieurs fois moi-même). Veuillez noter que le fichier de script contiendra le mot de passe en clair. Pour cela, vous devez vous assurer que seul root a une autorisation sur ce fichier!

Le fichier de script peut ressembler à ceci (/root/automount.sh):

#!/bin/sh
if [ $(mount | grep 'user@server:/folder' | wc -l) -ne 1 ]
then
    echo 'PASSWORD' | sshfs user@server:/folder /mnt/mountpoint -o password_stdin,allow_other
    echo 'SSHFS has been mounted.'
else
    echo 'SSHFS is already mounted.'
fi

Pour exécuter cela au démarrage, vous pouvez utiliser crontab en tant que root et entrer cette ligne:

@reboot /root/automount.sh

Comme indiqué ci-dessus, vous devez vous assurer que personne ne peut lire le fichier car il contient un mot de passe en texte brut!

-rwx------ 1 root root 526 Nov 21 12:57 automount.sh

À présent, après chaque redémarrage, votre système montera automatiquement le SSHFS à l'aide des informations d'identification.

Nico
la source
0

Eu le même problème. En fin de compte, cela a aidé à définir le type sur un fusible simple ou (ce qui est plus probable) à tronquer les options pour:

fuse reconnect,idmap=user,allow_other,default_permissions

qui a fonctionné pour moi à la fin

Kangur
la source
0

Si vous essayez de vous connecter à un serveur qui ne prend pas en charge les clés et que vous souhaitez qu'il soit automatique, vous pouvez utiliser sshpasspour taper votre mot de passe pour vous même avec sshfset même dans fstab.

Par exemple, si vous mettez quelque chose de similaire à ceci dans /etc/fstab:

sshfs#username@host:/  /mnt/here   fuse   auto,ssh_command=sshpass\040-f\040/root/.ssh/host.password\040ssh  0  0

Mettez ensuite le mot de passe dans le nom de fichier spécifié dans /etc/fstab:

echo 'secret' > /root/.ssh/host.password

Assurez-vous d'avoir installé sshpass:

pacman -S sshpass  # if you're using Arch Linux

Ensuite, cela devrait fonctionner:

mount /mnt/here

Vous devrez peut-être sshune première fois sur le serveur pour confirmer sa clé, mais après cela, cela devrait fonctionner sans interaction manuelle, et avec l' autoindicateur fstabqu'il devrait monter au démarrage sans avoir besoin d'entrer manuellement le mot de passe.

Malvineous
la source