web-dev-qa-db-fra.com

Comment monter automatiquement en utilisant sshfs?

J'utilise la commande suivante pour monter un répertoire ssh ubuntu sur mon pc ubuntu.

sshfs [email protected]:/dir/dir /home/username/mount/xxx

Ma question est la suivante: puis-je créer un script à cet effet sur mon bureau où je peux faire un double-clic et exécuter ce script chaque fois que je dois monter le lecteur sans toujours saisir manuellement la commande.

14
BlueBird

Vous pouvez créer un lanceur et l'ajouter à votre barre de lanceur en glissant-déposant le fichier .desktop- à cet emplacement:

    #!/usr/bin/env xdg-open

    [Desktop Entry]
    Version=1.0
    Type=Application
    Terminal=false
    Icon[en_US]=nautilus
    Name[en_US]=Connect to xy
    Exec=shfs [email protected]:/dir/dir /home/username/mount/xxx
    #OR: to mount and than open in nautilus (note the '/dir' where ':dir' used to be)
    #Exec=nautilus sftp://[email protected]/dir/dir
    Comment[en_US]=Connect to xy via ssh
    Name=Connect to xy
    Comment=Connect to xy via ssh
    Icon=nautilus

Suggestion - encore moins de travail:

Si vous voulez encore moins de travail (= autoconnect) et une interface utilisateur graphique, vous pouvez vouloir vérifier GigoloInstall gigolo . Il a la capacité de monter automatiquement un signet, chaque fois que le système de fichiers marqué est présent. Vous voudrez peut-être vérifier cela.

Sudo apt-get install gigolo   # or use the install link above

Exécutez gigolo. Il existe une option dans les préférences qui le met en démarrage automatique et une autre pour activer l'icône de la barre des tâches. Vérifiez les deux. Ajoutez ensuite votre marque-page.

Voici une capture d'écran:

enter image description here

Façon Shell

Une autre solution serait de mettre la ligne suivante dans votre crontab (éditez /etc/crontab avec les privilèges Sudo):

@reboot sshfs [email protected]:/dir/dir /home/username/mount/xxx

Mais comme le gestionnaire de mots de passe d'Ubuntu n'est pas présent lors de l'exécution de la commande, vous devez utiliser une paire de clés publique/privée sans mot de passe pour vous authentifier auprès du serveur ssh en question (ou une méthode d'authentification similaire). Cela le monte à chaque redémarrage.

Une autre solution consisterait à modifier votre /etc/fstab (à condition que votre version Ubuntu offre cette option).

15
con-f-use

Ce fil de forum montre une méthode pour créer un SSHFS à montage automatique qui me semble exactement ce que vous aimeriez faire.

4
lbrown

Vous pouvez simplement taper ceci dans un script Shell et créer un programme de lancement pour celui-ci sur le bureau.

Par exemple mountssh.sh:

#!/bin/bash
shfs [email protected]:/dir/dir /home/username/mount/xxx

assurez-vous de chmod +x mountssh.sh puis cliquez dessus, il sera exécuté

Vous pouvez également le monter via gvfs, en cliquant avec le bouton droit de la souris sur le bureau et en créant un programme de lancement avec le paramètre URL: ssh://[email protected]/dir/dir. Par défaut, il est monté sur ~/.gvfs/.... Si vous voulez rester avec le /home/username/mount/xxx, vous pouvez créer un lien symbolique du gvfs à celui-ci.

3
Iradrian

Vous pouvez même aller un peu plus loin et avoir autofs s'occuper du montage pour vous. Puisque autofs ne fonctionne pas très bien avec l'authentification par clé publique SSH (à moins que vous ne souhaitiez créer une paire de clés sans mot de passe pour le super-utilisateur ), il existe des outils vous permettant d'utiliser les clés SSH de l'utilisateur, ssh- agent et porte-clés:

  • autosshfs : montage automatique SSHFS par utilisateur à l'aide de la configuration SSH de l'utilisateur
  • afuse : un montage automatique implémenté avec Fuse
2
kynan

Je monte un dossier exactement de la même manière. Ce que j’ai fait est de créer un programme de lancement personnalisé qui pointe vers un fichier .sh contenant la commande. Assurez-vous simplement que le fichier dispose d'une autorisation d'exécution et que vous êtes prêt à partir.

Je viens de cliquer sur le lanceur:

enter image description here

0
amosrivera

J'ai essayé d'utiliser cron pour monter automatiquement le répertoire ssh, mais une erreur est générée en indiquant Network is unreachable. C'est parce que l'exécution du travail cron est trop tôt pour établir des connexions ip. Après avoir inséré sleep avant la commande sshfs, le répertoire ssh a été correctement monté.

sleep 5 && sshfs ......

J'ai donc créé ce script pour répondre à mes besoins.

#! /bin/sh
while true
do 
    ping -c1 -w1 ssh_server_ip > /dev/null && break
done
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 sshname:/mountpath /localmountpath
0
fx-kirin