这是我的设置:
- 办公室电脑在网络中,无法从外部访问,(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.