Comment monter automatiquement à l'aide de sshfs?


14

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

sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

Ma question est, puis-je créer un script pour cela sur mon bureau où je peux faire un double clic et exécuter ce script chaque fois que j'ai besoin de monter le lecteur sans toujours taper manuellement la commande.

Réponses:


15

Vous pouvez créer un lanceur et l'ajouter à votre barre de lancement en faisant glisser-déposer le .desktopfichier-là:

    #!/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 user@192.xx.xx.xx.xx:/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://user@192.xx.xx.xx.xx/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 (= autoconnexion) et une interface utilisateur graphique, vous voudrez peut-être consulter Gigolo Installer 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

Courez gigolo. Il y a une option dans les préférences qui la met en démarrage automatique et une autre pour activer l'icône de la barre d'état. Vérifiez les deux. Ajoutez ensuite votre signet.

Voici une capture d'écran:

entrez la description de l'image ici

Façon Shell

Une autre solution serait de mettre la ligne suivante dans votre crontab (éditer /etc/crontabavec les privilèges sudo):

@reboot sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

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

Une autre solution serait de modifier votre /etc/fstab(à condition que votre version Ubuntu fournisse cette option).


1
Je ne peux pas utiliser le gigolo. Parce que je veux utiliser un point de montage spécifique dans mon dossier personnel. Votre première solution semble bonne. Mais je ne suis pas clair sur le nom du fichier. Vous avez donné ".desktop-file" Est-ce le nom ou l'extension du fichier. Veuillez me donner plus d'exemples sur la dénomination des fichiers. ALORS je peux l'essayer.
BlueBird

C'est l'extension. Tous les lanceurs dans ubuntu se terminent par ".desktop". Créez un fichier vide. Copiez-y le texte que j'ai posté ci-dessus. Remplacez le texte derrière "Name =" par ce qui vous convient et remplacez les vrais chemins dans le texte derrière "Exec =". Enregistrez-le ensuite sous "connect.desktop" ou "mountxy.desktop" (par exemple). Après avoir enregistré le fichier, faites-le glisser et déposez-le dans votre panneau de lancement ou où vous le souhaitez.
con-f-use

Génial!! Ça a marché.
BlueBird

8
OMG ... pire nom pour un programme.
Lekensteyn

Apparemment, il n'y a plus d'option pour ajouter gigolo au démarrage automatique, vous devrez donc le faire vous-même. Exécutez gnome-session-propertieset ajoutez la /usr/bin/gigolocommande. Il n'est pas possible de sélectionner un point de montage, mais vous pouvez créer un lien symbolique vers votre répertoire personnel (avec ln -s). Vous pouvez trouver le point de montage d'origine en cliquant avec le bouton droit sur un dossier dans le gestionnaire de fichiers et en le sélectionnant Open in Local Terminal.
Seppo Enarvi

4

Ce fil de discussion montre une méthode de création d'un SSHFS à montage automatique qui me semble exactement ce que vous aimeriez faire.


Le thread est assez ancien et pour ajouter un montage dépendant du réseau, nous pouvons maintenant utiliser les options x-systemdet _netdev.
Turgon

3

Vous pouvez simplement taper ceci dans un script shell, et vous pouvez créer un lanceur pour cela sur le bureau.

Par exemple mountssh.sh:

#!/bin/bash
shfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

assurez-vous chmod +x mountssh.sh, puis en cliquant dessus, il exécutera

Vous pouvez monter via gvfs, par un clic droit sur le bureau, et la création d' un lanceur avec le paramètre URL: ssh://user@192.xx.xx.xx.xx/dir/dir. Par défaut, il se monte sur ~/.gvfs/.... Si vous voulez rester avec le /home/username/mount/xxx, vous pouvez créer un lien symbolique à partir du fichier gvfs vers celui-ci.


J'ai créé le fichier "mount-192.168.1.5.sh" sur mon bureau. Lorsque je double-clique dessus, il est ouvert avec gedit.
BlueBird

Vous devez créer ce fichier sh avec des privilèges exécutables n'importe où, et créer un lanceur sur votre bureau, qui pointe vers ce fichier .sh.
Iradrian

2

Vous pourriez même aller plus loin et demander à Autofs de s'occuper du montage pour vous. Comme autofs ne fonctionne pas particulièrement bien avec l'authentification par clé publique SSH (sauf si vous voulez créer une paire de clés sans mot de passe pour le superutilisateur ), il existe des outils qui vous permettent d'utiliser les clés SSH, l'agent ssh et le trousseau de l'utilisateur:

  • autosshfs : par utilisateur SSHFS automount utilisant la configuration SSH de l'utilisateur
  • afuse : un automounter implémenté avec FUSE

0

Je monte un dossier exactement la même manière, ce que je faisais était de créer un lanceur personnalisé qui pointe vers un .shfichier qui contient la commande. Assurez-vous simplement que le fichier dispose d'une autorisation d'exécution et que vous êtes prêt à partir.

Je clique simplement sur le lanceur:

entrez la description de l'image ici


0

J'ai essayé d'utiliser cron pour monter automatiquement le répertoire ssh, mais cela provoque une erreur en disant 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 sshfscommande, il a réussi à monter le répertoire ssh.

sleep 5 && sshfs ......

J'ai donc fait 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.