HOME Verzeichnis nach ssh-login

von Markus Berger am Samstag, 4. März 2023

Einleitung

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.

Vorbereitung

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

Nutzung

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.

Verbesserungen

Sind die passenden Schlüssel hinterlegt und angegeben, kann der Anmeldevorgang vereinfacht werden.

Links