SSHリバーストンネル経由でNFSサーバーをマウントする

SSHリバーストンネル経由でNFSサーバーをマウントする

私の設定は次のとおりです:

  • 外部からアクセスできないネットワーク内のオフィスコンピュータ (OC)
  • 現場組み込みコンピュータ(FC)
  • オフィス内のサーバー。現場のコンピュータがアクセスする必要があるデータが格納されています。オフィスのコンピュータはこのサーバーからディレクトリをマウントします。これはNFSです。

私は定期的に SSH 経由で現場のコンピューターで作業していますが、問題は現場のコンピューターからオフィスのサーバー上のデータにアクセスすることです。

これまで、私はフィールド コンピュータを でオフィス コンピュータにマウントすることでこの問題を解決してきましたsshfs。問題なく動作しますが、欠点もあります。ローカル オフィス コンピュータの別のローカル セッションからではなく、SSH セッションから直接情報を取得してプッシュしたいのです (たとえば、gitsshfs マウントポイントから実行すると非常に遅くなります)。

これは SSH リバース トンネルによって実現できると理解しています。

オフィス コンピュータ (OC) からフィールド コンピュータ (FC) にログインしようとしたことは次のとおりです。

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

(FCは私のにセットアップされています~/.ssh/config)

私の理解する限りでは、これにより FC のポート 9001 が開かれ、<nfs_server_name>ポート 2049 での OC のアイデアがリッスンされます。

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:9001FC を開いて 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.

関連情報