
Вот моя установка:
- Офисный компьютер в сети, без возможности доступа извне (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.
После SSH
FC я пытаюсь смонтировать порт как 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:9001
FC и увидеть веб-интерфейс сервера 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.