Как монтировать удаленные директории с SSHFS на Linux
Как подключить удаленный каталог по SSH в системе ОСLinux? Как использовать SSHFS для монтирования удаленные файловые системы через SSH в системе Ubuntu или Debian / RHEL / CentOS / Arch Linux?
SSH является безопасным протоколом, и вы можете использовать его, чтобы смонтировать каталог на удаленном сервере или локальной ноутбук с помощью сервиса SSHF. С SSHFS вы можете смонтировать удаленную файловую систему сервера на локальный с ОС Linux.
Подробнее о SSHFS
SSHFS является файловая система на основе протокола передачи SSH файла. Она устанавливается на клиентской системе, её необходимо установить на локальном компьютере / ноутбуке ОС CentOS / RHEL / Ubuntu / Debian / Arch Linux. Нет необходимости устанавливать что-либо на сервере (server1.cyberciti.biz). Вам нужно всего лишь OpenSSH сервер, установленный на стороне сервера. Пример:
Установка SSHFS на Ubuntu / Debian / Mint Linux
Введите следующую команду APT-GET:
1 |
sudo apt-get install sshfs |
Установка SSHFS на Arch Linux
Введите следующую команду:
1 |
sudo pacman -S sshfs fuse |
Установка SSHFS на RHEL (Red Hat) / CentOS Linux
Во-первых, включить репозиторий Epel, а затем введите следующую yum команду, чтобы установить файловую систему FUSE для доступа удаленных файловых систем с помощью SSH на CentOS / RHEL:
1 |
sudo yum install fuse-sshfs |
Как смонтировать удаленную файловую систему?
Синтаксис:
1 2 |
sshfs user@server /path/to/mountpoint sshfs user@server /path/to/mountpoint options |
Во-первых, необходимо создать каталог с помощью MKDIR команды:
1 |
sudo mkdir /mnt/server1 |
Я собираюсь установить файловую систему, используя root, понадобится ввести пароль root при запросе:
1 2 3 4 |
sudo sshfs root@192.168.1.142:/ /mnt/server1/ ## OR use ssh key based login ## sudo sshfs -o IdentityFile=~/.ssh/keyfile /mnt/server1/ |
Проверим монтирование:
1 |
sudo df -h |
1 2 3 4 5 6 7 |
Filesystem Size Used Avail Use% Mounted on /dev/mapper/wks05-root 487G 114G 350G 25% / none 4.1k 0 4.1k 0% /sys/fs/cgroup udev 17G 4.1k 17G 1% /dev tmpfs 3.4G 1.9M 3.4G 1% /run /dev/sda1 239M 89M 138M 40% /boot root@192.168.1.142:/ 20G 12G 6.8G 64% /mnt/server1 |
Для доступа и / или просмотра удаленной файловой системы, выполните:
1 2 3 |
sudo -s cd /mnt/server1 ls -l |
Пример вывода:
Работа с ошибками «Отказано в доступе», и процедура мониторинга удаленного каталога
Если вы получаете сообщение об ошибке, при чтении: не может получить доступ к server1: Отказано в доступе (Permission denied), добавьте себя в группу под названием fuse:
1 2 |
$ sudo gpasswd -a "$USER" fuse Adding user nixcraft to group fuse |
Затем создайте точку монтирования внутри вашего собственного домашнего каталога:
1 2 3 4 |
$ mkdir $HOME/server1 $ ls -ld !$ ls -ld $HOME/server1 drwxrwxr-x 2 nixcraft nixcraft 4096 Mar 8 04:34 /home/nixcraft/server1 |
Для монтирования удаленной файловой системы, введите:
1 2 3 |
sshfs -o idmap=user root@192.168.1.142:/ $HOME/server1 df ls -l $HOME/server1 |
Как отмонтировать удаленную файловую систему?
Синтаксис:
1 2 3 4 |
sudo umount /mnt/server1 ## или ## fusermount -u /mnt/server1 |
Проверим:
1 |
df -h |
Как монтировать удаленную файловую систему автоматически при загрузке?
Отредактируйте файл /etc/fstab:
1 |
sudo vi /etc/fstat |
Синтаксис:
1 |
userNameHere@FQDN_OR_IP_HERE:/path/to/source/ /local/mountdir/ fuse.sshfs defaults,_netdev 0 0 |
Примеры
Добавьте следующую запись в конец файла:
1 |
sshfs#[email protected]:/ /mnt/server1 |
Другой пример с дополнительными опциями:
1 |
sshfs#[email protected]:/ /mnt/server1 fuse defaults,idmap=user,allow_other,reconnect,_netdev,users,IdentityFile=/path/to/.ssh/keyfile 0 0 |
Рекомендованный вариант для монтирования, если вы используете Systemd:
1 |
vivek@server1.cyberciti.biz:/project/www/ /mnt/server1 fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/vivek/.ssh/id_rsa,allow_other,reconnect 0 0 |
Сохраните файл. Описание параметров:
- [email protected]: Удаленный сервер с SSHD
- fuse: Тип файловой системы.
- idmap=user: только подключения пользователя с определенным UID.
- allow_other: Разрешить доступ для других пользователей.
- reconnect: Подключитесь к серверу.
- _netdev: файловая система находится на устройстве, которое требует доступа к сети (используется для защиты системы от попыток монтировать эти файловые системы, пока сеть не была включена в системе).
- users: Разрешить всем пользователям монтировать и размонтировать файловую систему.
- IdentityFile=/path/to/.ssh/keyfile — файл ключей SSH.
Для того чтобы не вводить пароль можно использовать команду
echo ‘pass’ | sshfs [email protected]:/dir /mydir -o password_stdin
где
pass — пароль от удаленного сервера;
password_stdin — опция которая принимает пароль передаваемый, через echo.