Wäre es nicht praktisch wenn ich auf einem entfernten System auch meine lokalen
Dateien verfügbar hätte. Diese Idee hatten auch die Plan9 Entwickler, weshalb
jedes Program seinen eigenen Namensraum bekommt. Dies kann man, wenn auch
nicht so elegant wie dort, auch mit ein paar Werkzeugen iproute2, ssh, sshfs, mergerfs
unter Linux nachbauen.
Auf dem lokalen und dem entfernten System muss sshd
laufen, es werden jeweils
User mit dem gleichen Namen benötigt und auf dem entfernten System muss sshfs
und mergerfs
installiert sein.
Weiterhin müssen die Dateien .bash_profile
und .bash_logout
entsprechend
auf dem entfernten Host wie folgt angepasst werden.
Hier die zusätzlichen Zeilen für profile:
ss -lnt | grep 2222 > /dev/null &&\
test -d /tmp/n_$USER || mkdir -p /tmp/n_$USER &&\
test -d $HOME/m || mkdir -p $HOME/m &&\
echo "mount remote HOME at /tmp/n_$USER:" &&\
sshfs -o Port=2222,UserKnownHostsFile=/dev/null,idmap=user $USER@localhost: /tmp/n_$USER &&\
echo "merge remote and local HOME at $HOME/m:" &&\
mergerfs /tmp/n_$USER=RO:$HOME $HOME/m
Dies hängt das Heimatverzeichnis des lokalen Nutzers im entfernten Rechner ein und führt beide zusammen.
Damit auch beim Abmelden nichts übrig bleibt, wird vorher aufgeräumt. Hier die Zeilen füt logout:
mountpoint -q $HOME/m && fusermount -zu $HOME/m
mountpoint -q /tmp/n_$USER && fusermount -zu /tmp/n_$USER
rmdir $HOME/m
Um das Konstrukt zu aktivieren vermindet man sich per ssh mit ein paar zusätzlichen Parametern:
ssh -R 2222:localhost:22 user@remote
Wenn man den Host-Schlüssel akzeptiert und sich passend auf seinen Rechner
rückwärts anmeldet, findet man seine lokalen Dateien in /tmp/n_$USER
und
die Kombination aus lokal und remote in $HOME/m
, wobei mit dem oberen Script
die lokalen Dateien nur lesend eingehängt sind.
Ein df -h
gibt eine Überblick über die Mountpunkte und den Speicherplatz.
Sind die passenden Schlüssel hinterlegt und angegeben, kann der Anmeldevorgang vereinfacht werden.