Da Windowsfreigaben die Speicherung des Passwortes mit unsicheren Hashes erfordert und NFS nur gut funktioniert, wenn die Clients auch lokal keine Adminrechte haben, ist der Zugriff nur über SSH möglich. Für einzelne Kopiervorgänge sind unter Remotezugriff mehrere Möglichkeiten beschrieben, unter Linux kann man das ganze jedoch bequemer über SSHFS in Kombination mit AutoFS lösen.

Einrichtung

Installiert zuerst autofs mit dem Paketmanager eurer Distribution. Je nach Distro liegen die Konfigurationsdateien dazu entweder direkt unter /etc oder in /etc/autofs, im folgenden $AUTOFSDIR.

Wir erstellen nun einen separaten SSH-Key für die Verbindung, der nur von root lesbar ist und nicht passwortgeschützt ist. Außerdem fügen wir den Server-Fingerprint für storage-ls6 (den Fileserver) zu den bekannten Hosts hinzu:

sudo ssh-keygen -t ed25519 -C "Key for ls6 autofs" -f /root/.ssh/id_autofs
sudo ssh-copy-id -i /root/.ssh/id_autofs 
echo 'storage-ls6 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBB7O0sLMPBINjvZGMtWL8gEgkXterhsaFd+mP4oTrwn5dpmVZdrLvHSLL32HA/JMG4Bzyj/36uXpQCmf/QaQoN0=' | sudo tee -a /root/.ssh/known_hosts

Erstellt nun eine Datei $AUTOFSDIR/auto.ssh mit folgendem Inhalt ($USER jeweils durch euren Benutzernamen / Lehrstuhlaccount ersetzen; bei Studi- und Externen Accounts im zweiten Eintrag den Pfad zum Homeverzeichnis anpassen, siehe echo $HOME auf beliebigem Server):

Scratch-Verzeichnis

scratch  -fstype=fuse,rw,allow_other,IdentityFile=/root/.ssh/id_autofs :sshfs\#$USER@storage-ls6.informatik.uni-wuerzburg.de\:/storage/scratch

Home-Verzeichnis für Mitarbeiter

home     -fstype=fuse,rw,allow_other,IdentityFile=/root/.ssh/id_autofs :sshfs\#$USER@storage-ls6.informatik.uni-wuerzburg.de\:/storage/home/ls6/$USER

Home-Verzeichnis für Studenten

home     -fstype=fuse,rw,allow_other,IdentityFile=/root/.ssh/id_autofs :sshfs\#$USER@storage-ls6.informatik.uni-wuerzburg.de\:/storage/home/stud/$USER

Die Datei $AUTOFSDIR/auto.master sollte bereits existieren, fügt hier die folgende Zeile hinzu:

/autofs /etc/autofs/auto.ssh --timeout=60

Hier gibt /autofs an, wo die Verzeichnisse später eingebunden werden. Dieses Verzeichnis muss existieren, also ggf. hier noch sudo mkdir /autofs ausführen.

Jetzt muss noch der AutoFS-Dienst aktiviert werden. Bei systemd-basierten Distributionen geht das mit sudo systemctl enable --now autofs.service. Falls autofs bereits lief (Ubuntu startet es z.B. automatisch bei der Installation), muss es nach dem Erstellen der Configdateien einmal neu gestartet werden: sudo systemctl restart autofs.service

Die verschiedenen Netzwerk-Mounts erscheinen erst, wenn darauf zugegriffen wird, d.h. /net ist anfangs leer. Damit man trotzdem über grafische Dateimanager auf die Dateien zugreifen kann und in der Shell die Autocompletion funktioniert, ist es empfehlenswert, Symlinks zu erstellen, die immer vorhanden sind, z.B.:

sudo ln -s /autofs/scratch /scratch
ln -s /autofs/home ~/ls6-home

Wenn ihr nun auf /scratch oder ~/ls6-home zugreift, wird das Verzeichnis automatisch eingebunden. Das dauert beim ersten Zugriff ggf. ein paar Sekunden, aber danach könnt ihr darauf zugreifen wie auf einen lokalen Ordner.

Troubleshooting

Sollte nach dem Start von AutoFS im /autofs Ordner nichts auftauchen, auch wenn ihr explizit auf den erwarteten Pfad zugreift (z.B. mit ls /autofs/scratch), gibt es ein paar Schritte, die ihr unternehmen könnt, um mehr Informationen zum Problem zu bekommen.

  1. Überprüft, ob ihr $AUTOFSDIR und $USER in den Konfigurationsdateien überall korrekt ersetzt habt.
  2. Schaut in die Logs von AutoFS: journalctl -u autofs.service. Hier sollten keine Fehlermeldungen auftauchen, falls doch, überprüft die Konfigurationsdateien.
  3. Überprüft, ob die SSH-Verbindung funktioniert: sudo ssh -i /root/.ssh/id_autofs $USER@storage-ls6.informatik.uni-wuerzburg.de (wieder $USER durch den Lehrstuhlaccount ersetzen). Stellt auch sicher, dass dieser Schritt ohne weiter Nutzereingaben durchläuft, also keine Passworteingabe oder Frage zur Vertrauenswürdigkeit des Servers.
  4. Sollte das noch nicht helfen, kann autofs im Debug-Modus gestartet werden. Beendet hierzu zuerst den Systemdienst (systemctl stop autofs.service). Startet autofs dann mit automount -d -f. Beobachtet die Ausgabe, während ihr in einem anderen Terminal oder Programm versucht, auf die Netzlaufwerke zuzugreifen.