Wenn ich eine NAS-Box als 24/7-Dateiserver verwende, möchte ich sshfs verwenden, um von einem Ubuntu 9.04-Desktop aus eine Verbindung dazu herzustellen. Derzeit habe ich diese Zeile in der fstab des Desktops:
sshfs#jldugger@storage:/mnt/HD_a2/ /mnt/storage fuse comment=sshfs,auto,users,exec,uid=1000,gid=1000,allow_other,reconnect,transform_symlinks,BatchMode=yes,fsname=sshfs#jldugger@storage/mnt/HD_a2/ 0 0
Ich kann bestätigen, dass es mit mount funktioniert /mnt/storage
. Was ich brauche, ist eine Methode zum Mounten beim Start, aber nachdem die Netzwerkverbindung hergestellt ist.
Antworten:
Gegenwärtig generiert Upstart in Ubuntu keine Netzwerkereignisse. Stattdessen nennt es traditionelles Sysvinit. Standardmäßig ist NetworkManager installiert und wird ausgeführt. Anstatt Netzwerkereignisse für den Start auszulösen, enthält es einen Run-Parts-Dispatcher (/etc/NetworkManager/dispatcher.d/), der sich einfach auf den Run-Parts-Dispatcher von ifupdown (/etc/network/*.d/) verlässt. Insbesondere interessieren Sie sich für /etc/network/if-up.d/ und /etc/network/if-down.d/
Richten Sie zunächst ein unverschlüsseltes ssh-Schlüsselpaar ein, damit Sie den Punkt ohne Aufforderung bereitstellen können. Schreiben Sie ein Skript, platzieren Sie es in /etc/network/if-up.d/ und machen Sie es ausführbar. Folgendes wurde in UbuntuForums entdeckt und war für mich ausreichend:
Wenn Sie eine WLAN- oder eine anderweitig unzuverlässige Verbindung haben, fügen Sie Folgendes in /etc/network/if-down.d/ ein:
quelle
echo
Befehle, die ausgegeben wurden, in stdout zulogger -t mountsshfs
Befehlen geändert habe, damit die Ausgabe zu syslog geht.Upstart ist die bevorzugte Methode zum Ausgeben von Startskripten oder -diensten in Ubuntu, obwohl die Bearbeitung
/etc/rc.local
noch funktioniert. Mit Upstart können Sie steuern, wann der Dienst ausgeführt wird, und sicherstellen, dass dies nach dem Herstellen der Netzwerkverbindung geschieht.Es ist auch möglich, die Symlinks in /etc/rc.Xd direkt zu bearbeiten (ersetzen Sie die verwendete Ausführungsebene durch X) und einen Namen wie S99mount hinzuzufügen, um sicherzustellen, dass sie nach dem Netzwerk-Setup ausgeführt werden. Dies muss auf eine Skriptdatei verweisen, die die angeforderten sshfs bereitstellt.
quelle
_netdev als mount option sollte dies meines erachtens lösen
quelle
Nur ein Gedanke, aber wenn Sie dies als Dateiserver verwenden, wäre NFS oder Samba vielleicht eine bessere Lösung als ssh.
quelle
Hier ist eine andere Lösung für den Fall, dass Sie kein Zertifikat von Ihrem Remote-Host haben und stattdessen ein Login / Passwort verwenden müssen. Ich verwende in diesem Beispiel denselben Benutzernamen und dieselben Verzeichnisse wie jldugger, um Verwirrung zu vermeiden.
Erstellen Sie eine Datei mit Ihrem Passwort in Ihrem Home-Verzeichnis und sichern Sie diese:
Bearbeiten Sie Ihre
/etc/rc.local
Datei und fügen Sie den folgenden Befehl am unteren Rand ein, jedoch vor dem "exit 0":quelle