
Hier ist mein Setup:
- Bürorechner im Netzwerk, ohne Zugriffsmöglichkeit von außen, (OC)
- Embedded Computer im Feld (FC)
- Server im Büro, der Daten enthält, auf die der Außendienstcomputer Zugriff benötigt. Der Bürocomputer mountet ein Verzeichnis von diesem Server, es ist NFS
Ich arbeite regelmäßig über SSH auf dem Feldcomputer. Das Problem besteht darin, vom Feldcomputer auf die Daten auf dem Büroserver zuzugreifen.
Bisher habe ich das Problem gelöst, indem ich den Feldcomputer mit in meinen Bürocomputer eingebunden habe sshfs
. Das funktioniert zwar, hat aber Nachteile. Ich möchte Informationen direkt von meiner SSH-Sitzung abrufen und übertragen, nicht von einer anderen lokalen Sitzung auf meinem lokalen Bürocomputer (beispielsweise git
ist die Ausführung vom SSHFS-Einbindungspunkt sehr langsam).
Ich verstehe, dass dies durch einen SSH-Reverse-Tunnel erreicht werden könnte.
Folgendes habe ich versucht, als ich mich vom Bürocomputer (OC) beim Feldcomputer (FC) angemeldet habe:
gauthier@OC $ ssh -R 9001:<nfs_server_name>:2049 FC
(FC ist bei mir eingerichtet ~/.ssh/config
)
Soweit ich es verstehe, wird dadurch Port 9001 auf FC geöffnet, um auf OCs Idee von <nfs_server_name>
Port 2049 zu hören.
9001 kann alles sein, was nicht reserviert ist, 2049 ist der Port für NFS.
Ich kann <nfs_server_name>
von OC aus pingen.
Nach SSH
dem FC versuche ich, den Port als NFS zu mounten:
gauthier@FC $ mkdir mp_test
gauthier@FC $ sudo mount -t nfs localhost:9001 mp_test/
Es bleibt einfach hängen und dann läuft die Zeit ab.
Ich dachte, ich müsste möglicherweise einen Pfad im NFS-Server angeben, also habe ich auch Folgendes versucht:
gauthier@FC $ sudo mount -t nfs localhost:9001:/path/to/directory/I/usually/mount mp_test/
Offensichtlich mache ich etwas falsch, entweder mit den Ports oder mit mount
.
Was funktioniert hat, ist, FCs Port 9001 so einzurichten, dass OCs <nfs_server_name>
auf Port 80 lauschen. Dann könnte ich localhost:9001
FC öffnen und die Weboberfläche des NFS-Servers sehen. Das lässt mich glauben, dass ich ziemlich nah dran bin.
Wie mounte ich das Büro-NFS-Serververzeichnis auf dem Feldcomputer?
Nachnoch etwas suchen, ich habe Folgendes versucht:
gauthier@OC $ ssh -R 5100:<server>:2049 -R 5200:<server>:2233 FC
gauthier@FC $ sudo mount -v -t nfs -o port=5100,mountport=5200 localhost:/path/to/share/dir mp_test
[sudo] password for gauthier:
mount.nfs: timeout set for Thu Apr 30 14:14:27 2015
mount.nfs: trying text-based options 'port=5100,mountport=5200,vers=4,addr=127.0.0.1,clientaddr=127.0.0.1'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'port=5100,mountport=5200,addr=127.0.0.1'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query retrying: RPC: Program not registered
mount.nfs: prog 100003, trying vers=3, prot=17
mount.nfs: portmap query failed: RPC: Program not registered
mount.nfs: requested NFS version or transport protocol is not supported
Und mit tcp
(an diesem Punkt können Sie sehen, dass ich Formeln der schwarzen Magie ausprobiere, ohne zu verstehen, was ich tue :/):
gauthier@FC $ sudo mount -v -t nfs -o tcp,port=5100,mountport=5200 localhost:/path/to/share/dir mp_test/
mount.nfs: timeout set for Thu Apr 30 14:15:04 2015
mount.nfs: trying text-based options 'tcp,port=5100,mountport=5200,vers=4,addr=127.0.0.1,clientaddr=127.0.0.1'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'tcp,port=5100,mountport=5200,addr=127.0.0.1'
connect_to <server> port 2233: failed.
connect_to <server> port 2233: failed.
connect_to <server> port 2233: failed.