
Aqui está minha configuração:
- Computador de escritório em rede, sem possibilidade de acesso externo, (OC)
- computador embarcado em campo (FC)
- Servidor no escritório, contendo dados aos quais o Envizio Pro precisa acessar. O computador do Office monta um diretório deste servidor, é NFS
Eu trabalho regularmente no Envizio Pro através de SSH, o problema é acessar os dados no servidor do escritório a partir do Envizio Pro.
Até agora resolvi isso montando o Envizio Pro no meu computador de escritório com arquivos sshfs
. Funciona bem, mas tem desvantagens. Gostaria de obter e enviar informações diretamente da minha sessão SSH, não de outra sessão local no computador do meu escritório local (por exemplo, executar git
a partir do ponto de montagem sshfs é muito lento).
Entendo que isso poderia ser alcançado por um túnel reverso SSH.
Aqui está o que eu tentei, fazendo login do computador do escritório (OC) para o computador de campo (FC):
gauthier@OC $ ssh -R 9001:<nfs_server_name>:2049 FC
(FC está configurado no meu ~/.ssh/config
)
Pelo que entendi, isso abre a porta 9001 no FC, para ouvir a ideia do OC <nfs_server_name>
na porta 2049.
9001 pode ser qualquer coisa que não esteja reservada, 2049 é a porta para NFS.
Eu posso fazer ping <nfs_server_name>
do OC.
Depois SSH
do FC, tento montar a porta como NFS:
gauthier@FC $ mkdir mp_test
gauthier@FC $ sudo mount -t nfs localhost:9001 mp_test/
Isso simplesmente trava e depois expira.
Achei que seria necessário fornecer um caminho no servidor NFS, então também tentei:
gauthier@FC $ sudo mount -t nfs localhost:9001:/path/to/directory/I/usually/mount mp_test/
Obviamente estou fazendo algo errado, seja com portas ou com arquivos mount
.
O que tem funcionado é fazer com que a porta 9001 do FC escute os OCs <nfs_server_name>
na porta 80. Aí eu poderia abrir localhost:9001
no FC e ver a interface web do servidor NFS. Isso me faz pensar que estou bem perto.
Como monto o diretório do servidor NFS do escritório no Envizio Pro?
Depoismais um pouco de pesquisa, eu tentei isso:
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
E com tcp
(neste ponto você pode ver que estou tentando fórmulas de magia negra sem entender o que estou fazendo :/):
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.