透過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/

顯然我做錯了什麼,無論是使用 ports 還是使用mount.

所做的工作是讓FC的9001埠監聽OC的<nfs_server_name>80埠localhost:9001。這讓我覺得我已經很接近了。

如何將辦公室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.

相關內容