Montaje del servidor NFS a través del túnel inverso SSH

Montaje del servidor NFS a través del túnel inverso SSH

He aquí mi arreglo:

  • Computadora de oficina en red, sin forma de acceder desde el exterior, (OC)
  • computadora integrada en el campo (FC)
  • Servidor en la oficina, que contiene datos a los que necesita acceder la computadora de campo. La computadora de Office monta un directorio desde este servidor, es NFS

Trabajo regularmente en la computadora de campo a través de SSH, el problema es acceder a los datos en el servidor de la oficina desde la computadora de campo.

Hasta ahora he resuelto esto montando la computadora de campo en la computadora de mi oficina con sshfs. Funciona bien pero tiene inconvenientes. Me gustaría obtener y enviar información directamente desde mi sesión SSH, no desde otra sesión local en la computadora de mi oficina local (por ejemplo, ejecutar gitdesde el punto de montaje sshfs es muy lento).

Entiendo que esto podría lograrse mediante un túnel inverso SSH.

Esto es lo que he probado, iniciando sesión desde la computadora de la oficina (OC) a la computadora de campo (FC):

gauthier@OC $ ssh -R 9001:<nfs_server_name>:2049 FC

(FC está configurado en mi ~/.ssh/config)

Según tengo entendido, esto abre el puerto 9001 en FC, para escuchar la idea de OC <nfs_server_name>en el puerto 2049.

9001 podría ser cualquier cosa que no esté reservada, 2049 es el puerto para NFS.

Puedo hacer ping <nfs_server_name>desde OC.

Después SSHde FC, intento montar el puerto como NFS:

gauthier@FC $ mkdir mp_test
gauthier@FC $ sudo mount -t nfs localhost:9001 mp_test/

Esto simplemente se cuelga y luego se agota el tiempo de espera.

Pensé que tal vez necesitaría proporcionar una ruta en el servidor NFS, así que también intenté:

gauthier@FC $ sudo mount -t nfs localhost:9001:/path/to/directory/I/usually/mount mp_test/

Obviamente algo estoy haciendo mal, ya sea con los ports o con los mount.

Lo que ha estado funcionando es hacer que el puerto 9001 de FC escuche los OC <nfs_server_name>en el puerto 80. Luego podría abrir localhost:9001en FC y ver la interfaz web del servidor NFS. Esto me hace pensar que estoy bastante cerca.

¿Cómo monto el directorio del servidor NFS de la oficina en la computadora de campo?


Despuésun poco más de búsqueda, probé esto:

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

Y con tcp(a estas alturas podéis ver que estoy probando fórmulas de magia negra sin entender lo que estoy haciendo :/):

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.

información relacionada