Raketenwilli: sshfs-Verbindungen zwischen zwei dynamischen Internetzugängen

Beitrag lesen

MyFritz-Kennungen:

Findest Du unter Internet→Online-Monitor oder in den Statusmails der Fritzbox, sieht aus wie

huakjdh23hlhlwhl23h4.myfritz.net

und ändert sich nicht.

Portforwarding einrichten:

  • Internet→Freigaben→Gerät für Freigabe hinzufügen Dann Rechner auswählen oder IP-Adresse setzen (Hat das Gerät eine feste IP?)
  • Danach: Neue Freigabe
  • Statt "MyFritz!-Freigabe" "Port-Freigabe wählen"

Nunmehr:

  • Anwendung: "Andere Anwendung"
  • Bezeichnung: ssh-server oder was Du Dir ausdenkst.
  • Protokoll: TCP
  • Port an Gerät: 22 bis 22
  • Port extern gewünscht, zB. 20022
  • Freigabe aktivieren nicht vergessen.

Von da an klicke auf alles, was wie Ja, Hurra, OK, Übernehmen oder Weiter anmutet bis Du auf dem Übersichtsfenster bist und Deine Freigabe einen grünen Punkt hat.

User-Einrichtungen auf den Hosts:

Du musst nichts tun. Es wird Dein ganz normaler Linux-Benutzer benutzt. Auch dessen Passwort. Tipp: ssh-keygen benutzen und dem privaten Schlüssel (~/.ssh/id_rsa) mit einen Passwort erzeugen. Den Privat-key dann (auf den künftigen Client, dort im Ordner ~/.ssh (sic: das geht dann genau so auch unter Windows 10!) mitnehmen und den Public-Key auf der Linux-Kiste mit

~> cat .ssh/id_rsa.pub >> .ssh/authorized_keys

zu den Erlaubten hinzufügen. Sobals man den privaten Schlüssel auf dem Client hat, auf dem Server als root in /etc/ssh/sshd_conf die PasswordAuthentification auf "no" setzen und dann nur für das lokale Netz wieder erlauben. (siehe man 5 sshd_config):

### File: /etc/ssh/sshd_conf

#… Ändere diese Zeilen
PasswordAuthentication no
PermitRootLogin no

#… Neue Zeilen:
Match Address 192.168.1.*
        PasswordAuthentication yes
        PermitRootLogin without-password

Verzeichnisfreigaben

„Issnich“ wegen „Issnich“ wegen „Mussnich“. Siehe unten.

...???

Daten ändern und Verbinden:

#/bin/bash

### File ~/bin/mysshfs

## Config:

ServerName="huakjdh23hlhlwhl23h4.myfritz.net";
ServerPort=20022;
UserName="ts";
LocalDir="/home/ts/mounts/zuHause";

## Program:

if [ ! -d  "${LocalDir}" ]; then
    mkdir -p "${LocalDir}" || exit 1;
fi
sshfs -p ${ServerPort} -o reconnect "${UserName}@${ServerName}" "${LocalDir}"
cd ${LocalDir}"; ls #Boris B. will ja wissen ob er schon drin ist

Man kann natürlich auch ein Verzeichnis mounten. Neue und geänderte Zeilen:

${ServerDir}="/foo/bar/baz";
sshfs -p ${ServerPort} -o reconnect "${UserName}@${ServerName}:${ServerDir}" "${LocalDir}";

Ich habe dafür natürlich ein schönes Skript mit tollen Fehlermeldungen.

Da war noch was? Ja: Verbindung trennen:

Geht leider nur als root. (sudo umount "${LocalDir}"). Kann man aber Skripten und das Skript ausgewählten Benutzern/Gruppen dann mit einer Zeile in einer neuen Datei unter /etc/sudoers.d ohne Passwort (auf dem Client natürlich!) erlauben.

Hints:

  • Du erreichst den Server dann auch mit normalem ssh oder rsync über den angegebenen Port (hier 20022). Den normalen Port 22 verwende ich nicht, weil ich mehrere Geräte in meinem Netz habe.
  • Zum „gemeinsamen Arbeiten“ hat Mitleser 2.0 geschrieben. Man hat viel versprochen aber es gilt meistens dann doch: „Wer zu letzt speichert hat Recht“.
  • In vielen Fällen (Zugfahrten?) kann es vorteilhaft sein, Dateien aus dem gemounteten Verzeichnis zu kopieren, zu bearbeiten und zurück zu kopieren.