通过 SSH 反向隧道挂载 NFS 服务器

通过 SSH 反向隧道挂载 NFS 服务器

这是我的设置:

  • 办公室电脑在网络中,无法从外部访问,(OC)
  • 现场嵌入式计算机(FC)
  • 办公室中的服务器,包含现场计算机需要访问的数据。办公室计算机从此服务器挂载一个目录,它是 NFS

我经常通过 SSH 在现场计算机上工作,问题是从现场计算机访问办公室服务器上的数据。

到目前为止,我已经通过将现场计算机安装在办公室计算机上解决了这个问题sshfs。它工作正常,但有缺点。我想直接从我的 SSH 会话获取和推送信息,而不是从本地办公室计算机上的另一个本地会话获取和推送信息(例如,git从 sshfs 挂载点运行非常慢)。

我知道这可以通过 SSH 反向隧道实现。

以下是我尝试过的操作,从办公室计算机(OC)登录到现场计算机(FC):

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

(我的 中设置了 FC ~/.ssh/config

据我了解,这将打开 FC 上的 9001 端口,以听取 OC<nfs_server_name>对 2049 端口的想法。

9001 可以是任何未保留的值,2049 是 NFS 的端口。

我可以<nfs_server_name>从 OC ping 通。

到 FC之后SSH,我尝试将端口挂载为 NFS:

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

这只是挂起,然后超时。

我想我可能需要在 NFS 服务器中给出一个路径,所以我也尝试了:

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

显然我做错了什么,无论是使用端口还是使用mount

一直有效的方法是让 FC 的端口 9001 监听<nfs_server_name>端口 80 上的 OC。然后我就可以localhost:9001在 FC 上打开并查看 NFS 服务器的 Web 界面。这让我觉得我已经很接近了。

如何在现场计算机上安装办公室 NFS 服务器目录?


更多搜索,我尝试了这个:

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

并且tcp(此时您可以看到我正在尝试黑魔法公式,却不明白自己在做什么 :/):

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.

相关内容