Смонтировать удаленный каталог с помощью SSH

Как смонтировать удаленный каталог с помощью SSH чтобы быть доступным так же, как если бы это был локальный каталог?

Сначала установите модуль:

sudo apt-get install sshfs

Загрузите его в ядро:

sudo modprobe fuse

Настройка разрешений (версии Ubuntu < 16.04):

sudo adduser $USER fusesudo chown root:fuse /dev/fusesudo chmod +x /dev/fusermount

Теперь мы создадим каталог для монтирования удаленной папки.

Я решил создать его в своем домашнем каталоге и вызвать его remoteDir.

mkdir ~/remoteDir

Теперь я запустил команду для его монтирования (монтирование на home):

sshfs maythux@192.168.xx.xx:/home/maythuxServ/Mounted ~/remoteDir

Теперь он должен быть смонтирован:

cd ~/remoteDirls -l

Настройка аутентификации на основе ключа ssh

Сгенерируйте пару ключей на локальном хосте.

$ ssh-keygen -t rsa

Примите все предложения с помощью клавиши enter.

Скопируйте открытый ключ на удаленный хост:

$ ssh-copy-id -i .ssh/id_rsa.pub user@host

Установка sshfs

$ sudo apt install sshfs

Смонтировать удаленный каталог

$ sshfs user@host:/remote_directory /local_directory

Не пытайтесь добавлять удаленные fs в /etc/fstab

Или не пытайтесь монтировать общие ресурсы через /etc/rc.local .

В обоих случаях это не сработает, так как сеть недоступна, когда init читает /etc/fstab.

Установите AutoFS

$ sudo apt install autofs

Редактировать /etc/auto.master

Закомментируйте следующие строки

#+/etc/auto.master.d#+/etc/auto.master

Добавить новую строку

/- /etc/auto.sshfs --timeout=30

Сохранить и выйти

Редактировать /etc/auto.sshfs

Добавить новую строку

/local_directory -fstype=fuse,allow_other,IdentityFile=/local_private_key :sshfs\#user@remote_host\:/remote_directory

Имя удаленного пользователя обязательно.

Сохранить и выйти

Запуск проверки подлинности в режиме отладки

$ sudo service autofs stop$ sudo automount -vf

Просматривайте журналы удаленного ssh-сервера

$ ssh user@remote_server$ sudo tailf /var/log/secure

Проверьте содержимое локального каталога

Вы должны увидеть содержимое удаленного каталога

Запустите автоматическую проверку в обычном режиме

Остановите автоматическую проверку, запущенную в режиме отладки, с помощью CTRL-C.

Запустите автоматическую проверку в обычном режиме

$ sudo service autofs start

Наслаждаться

(Протестировано на Ubuntu 14.04)

Основываясь на моих экспериментах, явное создание группы fuse и добавление в нее вашего пользователя не требуется для монтирования файловой системы ssh.

Подводя итог, вот шаги, скопированные с этой страницы:

  1. Устанавливать sshfs

$ sudo apt-get install sshfs

2.Создайте локальную точку монтирования

$ mkdir /home/johndoe/sshfs-path/

3.Смонтируйте удаленную папку /remote/path к /home/johndoe/sshfs-path/

$ sshfs remoteuser@111.222.333.444:/remote/path /home/johndoe/sshfs-path/

  1. И, наконец, к umount ...

$ fusermount -u /home/johndoe/sshfs-path/

Установка sshfs

sudo apt-get install sshfs

Добавить в fstab:

<USER>@<SERVER_NAME>:<server_path> <local_path> fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/<YOUR_USER_NAME>/.ssh/id_rsa,allow_other,default_permissions,rw,nosuid,nodev,uid=1000,gid=1000,nonempty 0 0

Хотя это не совсем отвечает на ваш вопрос, но я просто хотел упомянуть, что вы также можете достичь той же цели, используя "sftp". Просто в адресной строке вашего файлового менеджера введите эту команду:

sftp://remoteuser@111.222.333.444/remote/path

Простой способ запустить монтирование sshfs при запуске - это также добавить его в root (или другого пользователя) crontab, например:

@reboot sshfs remoteuser@111.222.333.444:/remote/path /home/johndoe/sshfs-path/

И если вам нужно добавить задержку, вы можете использовать:

@reboot sleep 60 && sshfs remoteuser@111.222.333.444:/remote/path /home/johndoe/sshfs-path/

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

Я настраиваю удаленный каталог и создаю crontab с sudo crontab -e. Позже я узнал, что файл резервной копии вообще не записывал удаленный каталог. Потом я обнаружил, что не могу cd на удаленный диск, как root ! Так что в конце концов я создаю ту же задачу с crontab -e и все работает так, как я и ожидал.