Linux mount remote filesystem

How To Mount a Remote Directory With SSHFS on a Linux

H ow can I mount a remote directory with ssh on a Linux bases system? How do I use SSHFS to mount remote file systems over SSH on a Ubuntu or Debian/RHEL/CentOS/Arch Linux system?

SSH is a secure protocol and you can use it to mount a directory on a remote server or local laptop with the help of the SSHF service. With SSHFS you can mount remote server file system to your local development workstation/laptop powered by Linux. [donotprint]

Tutorial details
Difficulty level Intermediate
Root privileges Yes
Requirements sshfs
Est. reading time 10m

[/donotprint]

More on SSHFS

sshfs is a filesystem based on the SSH file transfer protocol. It is used on a client system i.e. you need to install sshfs package on your local computer/laptop powered by CentOS/RHEL/Ubuntu/Debian/Arch Linux. No need to install anything on server (server1.cyberciti.biz). You only need an openssh server installed on server side. Our sample setup:

Fig.01: Our sample setup

Installing SSHFS on a Ubuntu/Debian/Mint Linux

Installing SSHFS on an Arch Linux

Type the following command:

Make sure you add user named vivek to fuse group:
## [ create fuse group if does not exist as per your distro ] ##
$ sudo groupadd fuse
$ sudo usermod -a -G fuse vivek

Installing SSHFS on a RHEL (Red Hat)/CentOS Linux

First, turn on EPEL repo and then type the following yum command to install FUSE-Filesystem to access remote filesystems via SSH on a CentOS/RHEL:

How do I mount the remote file system?

First, create a directory using mkdir command:

I’m going to mount file system using root user and you need to type root password when prompted:

To access and/or to see the remote file system, run:

  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard

Join Patreon

Fig. 02: sshfs in action

Dealing with “Permission denied” error and recommended procedure for mounting the remote directory

If you get an error that read as cannot access server1: Permission denied, add yourself to a group called fuse:

Next, create a mount point inside your own home directory:

To mount the remote file system, enter:

Fig.03: Using sshfs without root access on local laptop/desktop

How do I unmount the remote file system?

How can I permanently mount the remote file system by updating /etc/fstab?

For persistent mounts, you must create ssh keys based login
$ ssh-keygen -t rsa
$ ssh-copy-id -i

/.ssh/id_rsa.pub vivek@server1.cyberciti.biz
Now, edit the /etc/fstab file, enter:

Examples

Add the following entry at the bottom of the file:

Another example with additional options:

Recommend option for on-demand mounting if you are using systemd:

Save and close the file. Where,

  1. root@192.168.1.142 : Remote server with sshd
  2. fuse : File system type.
  3. idmap=user : Only translate UID of connecting user.
  4. allow_other : Allow access to other users.
  5. reconnect : Reconnect to server.
  6. _netdev : The filesystem resides on a device that requires network access (used to prevent the system from attempting to mount these filesystems until the network has been enabled on the system).
  7. users : Allow every user to mount and unmount the filesystem.
  8. IdentityFile=/path/to/.ssh/keyfile – SSH key file.

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Category List of Unix and Linux commands
Documentation help • mandb • man • pinfo
Disk space analyzers df • duf • ncdu • pydf
File Management cat • cp • less • mkdir • more • tree
Firewall Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04
Linux Desktop Apps Skype • Spotify • VLC 3
Modern utilities bat • exa
Network Utilities NetHogs • dig • host • ip • nmap
OpenVPN CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04
Package Manager apk • apt
Processes Management bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop
Searching ag • grep • whereis • which
Shell builtins compgen • echo • printf
Text processing cut • rev
User Information groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w
WireGuard VPN Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04

Comments on this entry are closed.

Word of warning: SSHFS is even slower than FTP since §sshd§ has to crypt everything, it’s also slow doing it, which also makes SFTP Clients slow to like 100-300KB/s speed. SSHFS is a nice thing to transparently move data, but be prepared for ultra-slow transmission even on powerful CPU.

Источник

Монтирование удаленной директории с помощью sshfs. Часть вторая

Опция allow_other

Сейчас доступ к директории /home/evgeniy/var-www/ имеет только пользователь evgeniy . Чтобы разрешить другим пользователям работать с файлами в этой директории, нужно использовать опцию allow_other :

По умолчанию это может делать только пользователь root . Чтобы разрешить другим пользователям применять эту опцию, редактируем файл /etc/fuse.conf :

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

Аутентификация по ключу

Давайте создадим пару ключей на клиенте и скопируем публичный ключ на сервер:

Проверяем, что теперь можем подключаться к серверу без ввода пароля:

И монтируем удаленную директорию уже без ввода пароля:

Монтирование при загрузке

Если есть необходимость автоматически монтировать удаленную директорию при загрузке системы, то есть два пути. Первый — отредактировать файл /etc/fstab и добавить новую запись о монтировании. Второй — создать новый unit-файл для системы инициализации systemd .

1. Редактируем файл /etc/fstab

Монтирование удаленной директории выглядит примерно так:

Но, чтобы это заработало, должна быть настроена аутентификация по ключу на сервере. Мы это уже сделали, но монтирование файловых систем происходит от имени пользователя root . И файл ключа операционная система будет искать в директории /root/.ssh/ . А наш ключ рсположен в домашней директории пользователя evgeniy . Поэтому нужно явно указать путь:

Кроме того, нужно один раз подключиться к серверу от имени пользователя root — чтобы был создан файл /root/.ssh/known_hosts :

Здесь используется опция монтирования uid=1000 — это значит, что владельцем файлов на клиенте будет пользователь с идентификатором 1000, другими словами — пользователь evgeniy . Неважно, кто создает файл на клиенте — на сервере его владельцем будет пользователь developer , а на клиенте — пользователь evgeniy . По сути, мы получаем тот же эффект, как при использовании опции idmap=user .

Когда мы создаем на клиенте новый файл, на самом деле мы создаем файл на сервере от имени пользователя developer . Основная группа этого пользователя — www-data (см. здесь). Эта группа существует как на сервере, так и на клиенте (хотя на клиенте веб-сервер не установлен). И идентификатор этой группы равен 33 (на клиенте и на сервере установлена ОС Ubuntu). Так что можно не задавать опцию монтирования gid=идентификатор .

2. Создаем новый unit-файл

Здесь опять возможны два варианта — создать файл .service (который просто выполнит команду монтирования), либо файл .mount (который предназначен специально для монтирования файловых систем).

2.1. Создаем service-файл

Итак, создаем новый unit-файл:

Команда sshfs выполняется от имени пользователя evgeniy , поэтому нам не нужно указывать путь к файлу ключа. Если пользователь не указан, команда будет выполнена от имени пользователя root — в этом случае указываем путь к файлу ключа:

Если по каким-то причинам нельзя настроить аутентификацию по ключу, можно использовать утилиту sshpass . Опция -f для утилиты sshpass говорит о том, что пароль доступа к серверу сохранен в файле /home/evgeniy/server.pass .

Разумеется, утилиту sshpass надо предварительно установить. Если нет желания хранить пароль в отдельном файле, можно просто передать его прямо в команде монтирования:

Сообщаем системе про новый unit-файл:

Добавляем новую службу в автозагрузку:

Теперь удаленная файловая система будет монтироваться автоматически во время загрузки системы. Кроме того, смонтировать и размонтировать удаленную файловую систему можно с помощью команд:

2.2. Создаем mount-файл

Мне пришлось изменить имя директории для монтирования удаленной файловой системы с /home/evgeniy/var-www/ на /home/evgeniy/server/ , потому что имя unit-файла должно состоять из имен директорий, показывающих путь к точке монтирования, то есть вот так home-evgeniy-server.mount .

Если по каким-то причинам нельзя настроить аутентификацию по ключу, можно использовать пароль:

Сообщаем системе про новый unit-файл:

Добавляем новую службу в автозагрузку:

Теперь удаленная файловая система будет монтироваться автоматически во время загрузки системы. Кроме того, смонтировать и размонтировать удаленную файловую систему можно с помощью команд:

Посмотреть текущее состояние можно с помощью команды:

Источник

How to Mount Remote File System over SSH in Linux

SSHFS is a filesystem based on the SSH File Transfer Protocol (SFTP). On remote side we just need to install SSH server, Since most of SSH servers already support this, there are nothing to do on remote server except installing SSH server. On client side we need to install fuse sshfs packages to mount remote filesystem. Newer version of SSHFS uses FUSE. The FUSE version of SSHFS is rewrite by Miklos Szeredi.

Features of SSHFS:

    • Based on FUSE (Best userspace filesystem framework for linux)
    • Multithreading: more than one request can be on it’s way to the server
    • Allowing large reads (max 64k)
    • Caching directory contents

Step 1 – Install FUSE-SSHFS

For CentOS/RHEL users, Fuse SSHFS is available under epel repository, So make sure you have install epel repository in your system. Now execute following command to install it

On CentOS/RHEL:

On Ubuntu & Dabian:

Step 2 – Mount Remote Directory

Let’s mount the remote server directory using sshfs. Make sure the remote system has a running ssh server with proper ssh connectivity from your system.

First, create a mount point

Lets mount the remote directory. For this example we are mounting /home/remoteuser directory from 192.168.1.12 (remote.example.com) system to our local system.

Step 3 – Verify Mount

After mounting the remote filesystem on the local mount point, verify it by running the mount command.

Also, navigate to your mount point, you will see files therefrom remote system

Step 4 – Mount Directory on System Boot

If you want to mount remote filesystem automatically each time when your system reboots, Add following entry to /etc/fstab file. Make sure you have have key based ssh setup between remote and local system.

Step 5 – Unmount Directory

If your work is over and you don’t need anymore the mounted directory, Simply unmount it using the following command.

Also remove entry from /etc/fstab file

Источник

Монтируем удаленную файловую систему через SSH.

Во время работы часто приходится работать с удаленными файлами, часто через ssh. Gnome позволяет подключиться и работать с данными с помощью утилиты Places->Connect to Server, но, к сожалению, таким образом могут работать не все программы… Vim, например, а так как это основной мой редактор — я искал способ сделать это. И нашел 🙂

Все, что написано дальше — касается Linux, в частности Ubuntu Linux.
Итак, способ: смонтировать удаленую систему так же, как вы монтируете локальные диски. Сделать такое возможно с поомщью утилиты sshfs.
Для начала надо ее установить вместе с несколькими зависимостями:

$sudo apt-get install sshfs

Потом нужно добавить себя в группу пользователей fuse. Сделать это надо, потому что программа устанавливвается в системные папки, в которые обычным пользователям доступ запрещен. Так, добавляем себя в группу:

$sudo adduser fuse

Потом создаем директорию для монтирования, например, на рабочем столе:

Теперь надо выйти с терминала и зайти вновь. Все, теперь мы в группе fuse. Пробуем соединиться с сервером:

Если соединение идет не по ключу то, скорее всего, у вас появится запрос на введение пароля с удаленной машины.
Если же вы сразу не получили ошибку fusermount: fuse device not found, try ‘modprobe fuse’ first — проверяйте директорию, там должны появиться файлики :). Если же вылезла ошибка — значит модуль ядра fuse не загрузился автоматом, пробуем загрузить вручную:

$sudo modprobe fuse

Пробуем установить соединение еще раз.
Чтобы отмонтировать это все дело, надо выполнить следующее:

Чтобы каждый раз не вводить такую кучу комманд — создаем(если нету) и редактируем файл

/.bash_aliases, добавляя в конец такие строчки:

alias testssh=’sshfs user@example.com:/stuff

/Desktop/test_ssh’
alias testssh_umount=’fusermount -u

Теперь вы сможете монтировать удаленную машину командой testssh, а размонтировать — testssh_umount 🙂

Cпасибо за внимание!

ЗЫ Статью сначала перевел с английского на украинский, добавил немного своего и перевел на русский для Хабра 🙂

Источник

Читайте также:  Linux шаблоны имен файлов
Оцените статью