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

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

4 ответа

Решение

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

sudo apt-get install sshfs

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

sudo modprobe fuse

Установка разрешений

sudo adduser $USER fuse

sudo chown root:fuse /dev/fuse

sudo chmod +x /dev/fusermount

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

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

mkdir ~/remoteDir

Теперь я выполнил команду для его монтирования (mount on home).

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

Теперь это должно быть установлено

cd ~/remoteDir
ls -l 

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

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

Генерация пары ключей на локальном хосте.

$ ssh-keygen -t rsa

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

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

$ 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

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

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

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

$ sudo service autofs stop
$ sudo automount -vf

Наблюдайте журналы удаленного сервера ssh

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

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

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

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

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

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

$ sudo service autofs start

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

(Проверено на Ubuntu 14.04)

Исходя из моих экспериментов, явное создание группы предохранителей и добавление в нее вашего пользователя НЕ требуется для монтирования файловой системы 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. И, наконец, размонтировать...

$ 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 mounts при запуске - также добавить его в 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 и все работает как я ожидал.

Другие вопросы по тегам