Was macht man eigentlich, wenn der Filius ausgezogen ist, er aber auf dem hauseigenen Server seine Musik, Dokumente, Fotos whatever liegen hat?
Alles auf eine USB Festplatte kopieren ist praktisch, aber nicht gewünscht.
NFS oder SMB über das Internet zugreifbar machen ist nur über VPN sinnvoll. Oder wie hier kurz beschreiben durch tunneln mit ssh.
Erster Schritt ist das forwarding für Port 22 im Router zu aktivieren. Das geht bei unserem Router in der Gui und wird hier nicht weiter beschrieben. Der Knackpunkt ist einfach, das eine ankommende Anfrage für eine ssh Sitzung zum Server weitergeleitet wird. Da man dadurch die Firewall im Router natürlich für alle ssh Anfragen geöffnet hat, sollte man tunlichst fail2ban auf dem Server installiert haben, weil man den Rechner nun angreifbar geben die Brute force Scripte gemacht hat, die laufend die Internet Welt auf schwache Passworte abklopfen. Fail2ban sperrt nach wenigen Fehlversuchen die IP für 10 Minuten und verhindert somit ziemlich wirksam diese Art von Angriffen. Eine andere Idee wäre, einen beliebigen anderen Port zu verwenden, was ich in der Anfangsphase vermeiden wollte, aber durchaus als zusätzliche Maßnahme empfehle. Natürlich habe ich direkten root Login in der sshd_config verboten, aber das versteht sich ja von selbst.
Der nächste Schritt ist, auf dem Windoof Rechner das Stoppen der evtl. freigegebenen Ordner, weil es unter Windoof nicht anders geht, es sei denn, man creiert virtuelle Hostadapter.
Diesen Weg gehen wir nicht, sondern stoppen also mit net stop server in der Command shell alle möglichen Freigaben.
Hat man sich cygwin installiert, kann man nun ganz normal in der bash den Tunnel via ssh aufbauen.
Ich habe den Befehl mal etwas auseinandergepflückt, weil es mit den Begriffen leicht Verwirrung geben kann.
In ein paar Sätzen beschrieben macht man auf seinen lokalen Rechner, hier also auf dem W$ Rechner des Filius einen Tunnel für das SMB Protokoll auf. Der Tunneleingang ist der lokale Rechner Port 139 und das andere Tunnelende wird als zweiter Parameter in Form einer ganz normalen ssh Syntax angegeben. Die Ip-Adresse ist die des fernen Servers, auf dem man zugreifen möchte.
Der dortige sshd muss forwarding erlaubt haben und kümmert sich um den Rest. Es werden also die TCP/IP Pakete des SMB Protokolls über die SSH Verbindung "getunnelt" und werden im fernen Rechner an den Port 139 weitergegeben.
Zusätzlich ist die sshVerbindung ohne weiteres parallel als ganz normale Login shell benutzbar.
ssh forwarding |
port:lokalerrechner:port | remotelogin@remoteserver |
ssh -L |
139:localhost:139 | login@ip-adresse |
Wenn man es lieber mit putty machen möchte, ist das auch kein Problem. Ich erspare mir hier das, weil es hier genau detailliert erklärt ist.
Hat man den public ssh-key auf den Server kopiert, wird man nun noch nicht einmal nach dem Passwort gefragt.
Wenn man sich nun am Prompt auf einem Server befindet, steht der Tunnel und kann benutzt werden.
Heißt die Freigabe auf dem RemoteServer z.B. server, dann genügt nun ein \\localhost\Server im Explorer und voila!
weitere Quellen:
www.blisstonia.com/eolson/notes/smboverssh.php
hier wird die Sache mit den virtuellen Hostadaptern erklärt.
http://www.ibr.cs.tu-bs.de/kb/samba-ssh.html Hier sind spezielle Infos für das RZ in BS, der allgemeine Teil ist aber zum Verständnis empfehlenswert.