Wie kann ich mit sshfs automatisch mounten?


14

Ich benutze den folgenden Befehl, um ein SSH-Ubuntu-Verzeichnis auf meinem Ubuntu-PC zu mounten.

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

Meine Frage ist, ob ich auf meinem Desktop ein Skript dafür erstellen kann, mit dem ich einen Doppelklick ausführen kann, wenn ich das Laufwerk einbinden muss, ohne den Befehl immer manuell einzugeben.

Antworten:


15

Sie können einen .desktopStarter erstellen und ihn Ihrer Starterleiste hinzufügen, indem Sie die -Datei dorthin ziehen und dort ablegen:

    #!/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

Vorschlag - noch weniger Arbeit:

Wenn Sie noch weniger Arbeit (= Autoconnect) und eine grafische Benutzeroberfläche benötigen, sollten Sie Gigolo ausprobieren Installieren Sie Gigolo. Es kann ein Lesezeichen automatisch mounten, wenn das mit einem Lesezeichen versehene Dateisystem vorhanden ist. Vielleicht möchten Sie das überprüfen.

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

Rennen gigolo. In den Voreinstellungen gibt es eine Option, die den automatischen Start aktiviert, und eine andere, um das Taskleistensymbol zu aktivieren. Überprüfen Sie beide. Fügen Sie dann Ihr Lesezeichen hinzu.

Hier ist ein Screenshot:

Bildbeschreibung hier eingeben

Shell weg

Eine andere Lösung wäre, die folgende Zeile in Ihre crontab einzufügen ( /etc/crontabmit sudo-Rechten bearbeiten ):

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

Da der Passwort-Manager von Ubuntu bei Ausführung des Befehls nicht vorhanden ist, müssen Sie zur Authentifizierung beim betreffenden SSH-Server (oder einer ähnlichen Authentifizierungsmethode) ein passwortloses Paar aus privaten und öffentlichen Schlüsseln verwenden. Dies würde es bei jedem Neustart bereitstellen.

Eine weitere Lösung wäre, Ihre zu bearbeiten /etc/fstab(sofern Ihre Ubuntu-Version diese Option bietet).


1
Ich kann kein Gigolo benutzen. Coz Ich möchte einen bestimmten Einhängepunkt in meinem Home-Ordner verwenden. Ihre erste Lösung scheint gut zu sein. Aber ich bin nicht klar über die Benennung der Dateien. Sie haben ".desktop-file" angegeben Ist das der Dateiname oder die Dateierweiterung zu sein. Bitte geben Sie mir ein weiteres Beispiel zur Dateibenennung. Dann kann ich es versuchen.
BlueBird

Es ist die Erweiterung. Alle Trägerraketen in Ubuntu enden mit ".desktop". Erstellen Sie eine leere Datei. Kopieren Sie den Text, den ich oben gepostet habe. Ersetzen Sie den Text hinter "Name =" durch den Text, der zu Ihnen passt, und ersetzen Sie die tatsächlichen Pfade im Text hinter "Exec =". Speichern Sie es dann als "connect.desktop" oder "mountxy.desktop" (zum Beispiel). Nachdem Sie die Datei gespeichert haben, ziehen Sie sie per Drag & Drop in Ihr Startfenster oder an die gewünschte Stelle.
con-f-use

Groß!! Es funktionierte.
BlueBird

8
OMG ... der schlechteste Name für ein Programm.
Lekensteyn

Anscheinend gibt es keine Möglichkeit mehr, Gigolo zum Autostart hinzuzufügen. Sie müssen es also selbst tun. Führen gnome-session-propertiesSie den /usr/bin/gigoloBefehl aus und fügen Sie ihn hinzu . Es ist nicht möglich, einen Einhängepunkt auszuwählen, Sie können jedoch eine symbolische Verknüpfung zu Ihrem Ausgangsverzeichnis (mit ln -s) erstellen . Sie können den ursprünglichen Einhängepunkt finden, indem Sie mit der rechten Maustaste auf einen Ordner im Dateimanager klicken und auswählen Open in Local Terminal.
Seppo Enarvi

4

Dieser Forenthread zeigt eine Methode zum Erstellen eines automatischen Einbindens von SSHFS, die mir genau so vorkommt, wie Sie es möchten.


Der Thread ist ziemlich alt und um netzwerkabhängige Mount hinzuzufügen, können wir jetzt x-systemdund _netdevOptionen verwenden.
Turgon

3

Sie können dies einfach in ein Shell-Skript eingeben und einen Starter dafür auf dem Desktop erstellen.

Beispielsweise mountssh.sh :

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

Stellen Sie sicher, dass chmod +x mountssh.shes ausgeführt wird, und klicken Sie dann darauf

Alternativ können Sie es über gvfs montieren, mit einem rechten Mausklick auf dem Desktop, und einen Starter mit URL - Parametern zu erstellen: ssh://user@192.xx.xx.xx.xx/dir/dir. Standardmäßig wird es an angehängt ~/.gvfs/.... Wenn du dabei bleiben willst /home/username/mount/xxx, kannst du aus dem gvfs einen Symlink dazu erstellen.


Ich habe die Datei "mount-192.168.1.5.sh" auf meinem Desktop erstellt. Wenn ich darauf doppelklicke, wird es mit gedit geöffnet.
BlueBird

Sie müssen diese sh-Datei mit ausführbaren Berechtigungen an einem beliebigen Ort erstellen und auf Ihrem Desktop ein Startprogramm erstellen, das auf diese .sh-Datei verweist.
Iradrian

2

Sie können sogar noch einen Schritt weiter gehen und sich von Autofs um die Montage kümmern lassen. Da autofs bei der SSH-Authentifizierung mit öffentlichen Schlüsseln nicht besonders gut funktioniert (es sei denn, Sie möchten ein kennwortloses Schlüsselpaar für den Superuser erstellen ), gibt es Tools, mit denen Sie die SSH-Schlüssel, den SSH-Agenten und den Schlüsselbund des Benutzers verwenden können:

  • autosshfs : SSHFS-Automount pro Benutzer unter Verwendung der SSH-Konfiguration des Benutzers
  • afuse : ein mit FUSE implementierter Automounter

0

Ich mounte einen Ordner genauso wie ich einen benutzerdefinierten Launcher erstellt habe, der auf eine .shDatei zeigt, die den Befehl enthält. Stellen Sie einfach sicher, dass die Datei die Ausführungsberechtigung hat und Sie können loslegen.

Ich klicke einfach auf den Launcher:

Bildbeschreibung hier eingeben


0

Ich habe versucht, cron zu verwenden, um das ssh-Verzeichnis automatisch einzuhängen, aber es wird ein Fehler ausgegeben Network is unreachable. Dies liegt daran, dass die Ausführung des Cron-Jobs zu früh ist, um IP-Verbindungen herzustellen. Nachdem ich sleep vor dem sshfsBefehl eingefügt habe , wurde das ssh-Verzeichnis erfolgreich gemountet.

sleep 5 && sshfs ......

Also habe ich dieses Skript erstellt, um meine Anforderungen zu erfüllen.

#! /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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.