Ist es möglich, sshfs automatisch zu mounten?

10

Ist es möglich, einen Remote-FS mithilfe von sshfs automatisch zu mounten, wenn eine ordnungsgemäße VPN-Verbindung hergestellt wird?

Erlauben Sie mir, das Szenario zu erklären. Ich arbeite remote. Dazu ist es hilfreich, wenn ich mein Home-Verzeichnis von einem Server im Büro aus bereitstellen kann. Dazu muss ich mich anmelden. Im Netzwerkmanager wähle ich das entsprechende VPN aus und verbinde mich. Es stellt eine Verbindung her, aber jetzt muss ich zur Befehlszeile wechseln und mein Home-Verzeichnis auf mehreren Computern bereitstellen.

Wenn ich vergesse, einen Computer auszuführen, ist meine lokale Entwicklungsumgebung nicht so effizient. Ich nehme an, ich könnte ein schnelles Bash-Skript schreiben, um dies zu tun, aber ich möchte es lieber automatisch zum Laufen bringen, wenn ich eine Verbindung herstelle.

Mark D.
quelle
@ Seth Diese Frage ist ein Duplikat davon;)
Radu Rădeanu
@ RaduRădeanu Diese Frage ist allgemeiner und wird daher in Zukunft für die Menschen hilfreicher sein.
Seth
Eigentlich habe ich meine Meinung geändert, es sind ganz andere Fragen.
Seth

Antworten:

12

Finden Sie die UUID Ihrer Verbindung mit

$ nmcli con

Beachten Sie, dass hier nicht nur physische Verbindungen aufgeführt sind, sondern auch die definierten drahtlosen Verbindungen (SSIDs).

Fügen Sie ein einfaches Skript wie dieses in Ihr /etc/NetworkManager/dispatcher.d/Verzeichnis ein:

#!/bin/bash

# Specify your connection UUID you like to trigger on below.
MYCON_UUID=397bdb70-2a89-415e-b3e9-09ca0b704fc1

if [ "$CONNECTION_UUID" == "$MYCON_UUID" ]
then
    # do your scripting you need to do here:
    mount -t sshfs ...
fi

Vergessen Sie nicht, die richtigen Berechtigungen festzulegen, um es entschuldbar zu machen (dh chmod +x trigger-sshfs-on-vpn.sh). Es kann sich um jede Art von Skript handeln. Ein Bash-Skript ist wahrscheinlich für Ihren Zweck ausreichend.

NetworkManager führt nur alle Skripts in diesem Verzeichnis aus und stellt einige Umgebungsvariablen bereit, die Sie für die Skripterstellung verwenden können. In diesem Fall brauchen Sie wahrscheinlich nur CONNECTION_UUID.

gertvdijk
quelle
Dies scheint der beste Weg zu sein, dies zu tun. Ich kann jedoch nicht mount -t sshfs user@host:/dir /home/myuser/dirzur Arbeit kommen, also habe ich es versucht, sshfs hostname:?directory /home/myuser/diraber das scheint auch nicht zu funktionieren. Irgendwelche Ideen?
Mark D
@MarkD Tritt Ihr Problem nur in einem NetworkManager-Dispatcher-Skript auf? Wenn nicht, möchten Sie möglicherweise eine andere Frage stellen. Und bitte seien Sie genauer über "funktioniert nicht".
Gertvdijk
@gertvdijk Was passiert, wenn ich für die Verbindung den ssh prv-Schlüssel verwende und dieselben Berechtigungen wie der Benutzer haben möchte, der sshfs ausführt? Das heißt, funktionieren Berechtigungen auch?
Confiq
1
@confiq Nein, NetworkManager führt dieses Skript als Root aus. Verwenden Sie wie bei jedem anderen Aufruf von root als Benutzer su. Z.B. su -l username -c 'mycommand'
Gertvdijk
1

Verwenden Sie Autofs.

Autofs stellt automatisch einen Ordner bereit, der als Einhängepunkt konfiguriert ist, wenn jemand oder etwas auf Ihrem System darauf zugreift.

Der Mount-Punkt kann ein Remote-Host über sshfs sowie ein beliebiger anderer Mount-Punkt sein, z.

  • Samba
  • nfs
  • NTFS

Hier ist eine schöne Anleitung

Tomodachi
quelle
Während Autofs funktionieren würden, wenn das Netzwerk manchmal erreichbar wäre. Es ist nur erreichbar, wenn ich mit dem VPN verbunden bin.
Mark D