Монтирование NFS-сервера через обратный туннель SSH

Монтирование NFS-сервера через обратный туннель SSH

Вот моя установка:

  • Офисный компьютер в сети, без возможности доступа извне (OC)
  • встроенный компьютер в полевых условиях (FC)
  • Сервер в офисе, содержащий данные, к которым полевой компьютер должен получить доступ. Офисный компьютер монтирует каталог с этого сервера, это NFS

Я регулярно работаю на полевом компьютере по SSH, проблема заключается в доступе к данным на офисном сервере с полевого компьютера.

Пока что я решил эту проблему, смонтировав полевой компьютер в моем офисном компьютере с помощью sshfs. Работает нормально, но есть недостатки. Я хотел бы получать и отправлять информацию напрямую из моего сеанса SSH, а не из другого локального сеанса на моем локальном офисном компьютере (например, запуск gitиз точки монтирования sshfs очень медленный).

Я понимаю, что этого можно добиться с помощью обратного туннеля SSH.

Вот что я попробовал сделать, войдя с офисного компьютера (ОК) на полевой компьютер (ПК):

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

(FC настроен в моем ~/.ssh/config)

Насколько я понимаю, это открывает порт 9001 на FC, чтобы прослушивать идею OC <nfs_server_name>на порту 2049.

9001 может быть любым незарезервированным портом, 2049 — это порт для NFS.

Я могу пинговать <nfs_server_name>из OC.

После SSHFC я пытаюсь смонтировать порт как 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 слушать OC <nfs_server_name>на порту 80. Тогда я смог открыть localhost:9001FC и увидеть веб-интерфейс сервера NFS. Это заставляет меня думать, что я довольно близок.

Как смонтировать каталог офисного 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.

Связанный контент