Mount sftp as folder linux

Монтируем удаленную файловую систему через 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пасибо за внимание!

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

Источник

It Can Be Done

Time to do anything

Mount a SFTP connection to a folder in Ubuntu / Linux

To do this I used a program called SSHFS which has done a great job. First, install if from the repo

You’ll need to create a directory to use as the location for your files

Execute the command to connect the actual SFTP Server. Replace xxx.xxx with the target IP address and use the -p option to specify the connection port. The user parameter is your user name. The :/ at the end of the IP address indicates the end of the IP address. Don’t try to put the port number after the colon

This will create a semi-permanent connection which will close if the machine is restarted. You can create a permanent connection which will reopen when the machine starts by editing the fstab file in /etc/fstab. Add a command to the end and restart the machine. Personally, I haven’t tried this because it’s a potential security risk and I didn’t need 100% uptime.

4 thoughts on “ Mount a SFTP connection to a folder in Ubuntu / Linux ”

hi tyvm for the post helped me to find a new solution to use. i do wish to add the auto mount command to fstab but my sftp server needs a password, would you please be so kind to put an example to auto map using fstab entry with a password (this is for home use and im aware of security risk) but i would like to use this.

Читайте также:  Оптимизируем windows 10 для слабых компьютеров

Unfortunately, I was not able to find a way to have fstab automatically authenticate with a password. This post has some useful information to get you started
https://unix.stackexchange.com/questions/29250/sshfs-always-asking-for-password-in-fstab

You can make a systemd entry and mount on boot as a system service

This isn’t mounting using SFTP?! It’s mounting using SSHFS! Both provide file access over SSH, but they are not the same thing…

Leave a Reply Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Источник

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

SSHFS (Secure Shell FileSystem) — это клиент, который позволяет монтировать удаленную файловую систему и работать с файлами этой системы на локальной машине с использованием протокола SFTP. SFTP (SSH File Transfer Protocol) — это безопасный протокол передачи файлов, который обеспечивает доступ, передачу и управление файлами через протокол Secure Shell. SSHFS поставляется со встроенным модулем ядра FUSE (файловая система в пространстве пользователей), который позволяет любым непривилегированным пользователям создавать свою файловую систему без изменения кода ядра.

Итак, у нас есть веб-сервер 123.123.123.123 , все файлы сайтов расположены в директории /var/www/ . На сервере установлен пакет openssh-server и есть пользователь evgeniy . На клиенте тоже есть пользователь evgeniy и мы хотим смонтировать удаленную директорию /var/www/ .

Прежде, чем что-то делать — убедитесь, что в файле конфигурации OpenSSH-сервера есть строка

Монтирование

Сначала установим пакет sshfs :

Создадим каталог для монтирования удаленной файловой системы:

Смонтируем в этот каталог директорию /var/www веб-сервера:

Теперь посмотрим содержимое каталога /home/evgeniy/var-www/host1.loc :

Права доступа

При работе с файлами сервера в директории /var/www/ , будут учитываться права удаленного пользователя evgeniy . Если у этого пользователя нет прав на чтение-запись файлов в директории /var/www/ , то и на локальной машине их нельзя просматривать и сохранять. Давайте подключимся по ssh к серверу 123.123.123.123 и посмотрим права на файлы в директории /var/www/host1.loc/ :

Только пользователь developer имеет право на запись файлов, все остальные могут только читать. Поэтому, если мы на клиенте попробуем записать что-то в файл index.php , то получим отказ:

Так что давайте размонтируем удаленную файловую систему и смонтируем еще раз:

Теперь мы можем как создавать новые директории и файлы, так и изменять существующие. Создадим на клиенте директорию /home/evgeniy/var-www/host1.loc/temp/ , а внутри этой директории — файл test.txt . И посмотрим на веб-сервере права на эту директорию и на этот файл:

Теперь все правильно — на клиенте мы работаем с файлами сервера под локальным пользователем evgeniy , а все изменения на сервере сохраняются от имени удаленного пользователя developer . Что за пользователь developer и зачем он нужен, можно прочитать здесь.

Два скрипта

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

Мы используем опцию password_stdin , которая позволяет получить пароль пользователя developer из входного потока. Кроме того, вместе с опцией password_stdin мы могли бы использовать утилиту sshpass — но ее нужно предварительно установить:

Полезные опции

Опция reconnect позволяет автоматически восстанавливать соединие в случае разрыва:

Опция password_stdin позволяет получать пароль пользователя из входного потока stdin :

Опция delay_connect — не монтировать удаленную директорию немедленно, а ждать момента первого обращения к файлам:

Опция idmap

Опция idmap по умолчанию имеет значение none . Если установить эту опцию в значение user , то sshfs будет транслировать идентификаторы локального и удаленного пользователя. Звучит сложно, так что давайте разберем на примере:

  • на сервере есть пользователь evgeniy , UID равен 1000
  • на сервере есть пользователь developer , UID равен 1001
  • на клиенте есть пользователь evgeniy , UID равен 1000
  • на клиенте есть пользователь backups , UID равен 1001

Посмотрим владельца файлов на сервере в директории /var/www/ :

Смонтируем удаленную файловую систему без опции idmap и посмотрим список файлов в директории /home/evgeniy/var-www/ :

Смонтируем удаленную файловую систему с опцией idmap и посмотрим список файлов в директории /home/evgeniy/var-www/ :

Как видите, все просто. При использовании опции idmap=user — все файлы, которые принадлежат на сервере пользователю developer , на клиенте принадлежат локальному пользователю evgeniy . Утилита sshfs в процессе работы подменяет UID удаленного пользователя developer , который равен 1001 на UID локального пользователя evgeniy , который равен 1000 . Если опция не используется, на локальной машине мы видим UID пользователя backups , потому что он совпадает с UID удаленного пользователя developer .

Читайте также:  Windows 10 где входящие

Эту опцию лучше использовать всегда. Либо, создать локального пользователя с таким же именем, как на сервере. И монтировать удаленную файловую систему от имени локального пользователя developer , передавая sshfs имя и пароль удаленного пользователя developer . Это не обязательно, но так проще не запутаться — почему файлы принадлежат пользователю backups и какое отношение он имеет к файлам веб-сервера? А никакого не имеет — просто UID совпали.

Источник

How to Mount Remote Linux Filesystem or Directory Using SSHFS Over SSH

The main purpose of writing this article is to provide a step-by-step guide on how to mount remote Linux file system using SSHFS client over SSH.

This article is useful for those users and system administrators who want to mount remote file system on their local systems for whatever purposes. We have practically tested by installing SSHFS client on one of our Linux system and successfully mounted remote file systems.

Before we go further installation let’s understand about SSHFS and how it works.

Sshfs Mount Remote Linux Filesystem or Directory

What Is SSHFS?

SSHFS stands for (Secure SHell FileSystem) client that enable us to mount remote filesystem and interact with remote directories and files on a local machine using SSH File Transfer Protocol (SFTP).

SFTP is a secure file transfer protocol that provides file access, file transfer and file management features over Secure Shell protocol. Because SSH uses encryption while transferring files over the network from one computer to another computer and SSHFS comes with built-in FUSE (Filesystem in Userspace) kernel module that allows any non-privileged users to create their file system without modifying kernel code.

In this article, we will show you how to install and use SSHFS client on any Linux distribution to mount remote Linux filesystem or directory on a local Linux machine.

Step 1: Install SSHFS Client in Linux Systems

By default sshfs packages does not exists on all major Linux distributions, you need to enable epel repository under your Linux systems to install sshfs with the help of Yum command with their dependencies.

Step 2: Creating SSHFS Mount Directory

Once the sshfs package installed, you need to create a mount point directory where you will mount your remote file system. For example, we have created mount directory under /mnt/tecmint .

Step 3: Mounting Remote Filesystem with SSHFS

Once you have created your mount point directory, now run the following command as a root user to mount remote file system under /mnt/tecmint . In your case the mount directory would be anything.

The following command will mount remote directory called /home/tecmint under /mnt/tecmint in local system. (Don’t forget replace x.x.x.x with your IP Address and mount point).

If your Linux server is configured with SSH key based authorization, then you will need to specify the path to your public keys as shown in the following command.

Step 4: Verifying Remote Filesystem is Mounted

If you have run the above command successfully without any errors, you will see the list of remote files and directories mounted under /mnt/tecmint .

Step 5: Checking Mount Point with df -hT Command

If you run df -hT command you will see the remote file system mount point.

Sample Output

Step 6: Mounting Remote Filesystem Permanently

To mount remote filesystem permanently, you need to edit the file called /etc/fstab . To do, open the file with your favorite editor.

Go to the bottom of the file and add the following line to it and save the file and exit. The below entry mount remote server file system with default settings.

Make sure you’ve SSH Passwordless Login in place between servers to auto mount filesystem during system reboots..

If your server is configured with SSH key based authorization, then add this line:

Next, you need to update the fstab file to reflect the changes.

Читайте также:  Обновления звука для windows 10

Step 7: Unmounting Remote Filesystem

To unmount remote filesystem, jun issue the following command it will unmount the remote file system.

That’s all for now, if you’re facing any difficulties or need any help in mounting remote file system, please contact us via comments and if you feel this article is much useful then share it with your friends.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.

Источник

Подключение и настройка SSHFS в Linux

Файловая система SSHFS (Secure Shell FileSystem) позволяет монтировать файловую систему удалённого сервера с помощью протокола SSH. Это может быть очень удобно, если вам надо передать на удалённый сервер много данных или скачать эти данные оттуда. Конечно, существует утилита scp, но иногда просматривать файловую систему в файловом менеджере намного удобнее.

В этой небольшой статье мы рассмотрим как выполняется подключение SSHFS в Linux, а также как настроить автоматическое монтирование этой файловой системы при загрузке.

Подключение SSHFS в Linux

Для работы файловой системы достаточно SSH доступа к удалённому серверу. На клиентской машине надо установить пакет sshfs. Если он не установлен, команда установки в Ubuntu будет выглядеть следующим образом:

sudo apt install sshfs

Монтирование SSHFS выполняется с помощью одноимённой команды. Её синтаксис такой:

$ sshfs опции имя_пользователя @ адрес : /путь /точка/монтирования

Например, чтобы примонтировать удалённую файловую систему по адресу 192.168.56.103 от имени пользователя root достаточно выполнить:

sudo sshfs root@192.168.56.103:/ /mnt

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

Чтобы получить возможность монтировать от имени обычного пользователя необходимо создать группу fuse:

sudo groupadd fuse

Затем добавить текущего пользователя в эту группу:

sudo usermod -aG fuse $USER

После этого перелогиньтесь в системе, чтобы изменения применились. От имени обычного пользователя вы не сможете примонтировать sshfs в /mnt потому что у вас нет права записи в эту папку, создайте папку для монтирования в домашней папке:

Далее можно пытаться монтировать:

Теперь вы можете использовать эту папку для того чтобы обмениваться файлами с сервером. Если надо чтобы и другие пользователи могли получать доступ к этой папке, надо использовать опцию allow_other. Она будет работать только если в файле /etc/fuse.conf присутствует опция user_allow_other. Добавьте её:

sudo vi /etc/fuse.conf

Теперь можно монтировать:

sshfs -o allow_other root@192.168.56.103:/

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

Автоматическое монтирование SSHFS

Вы можете настроить автоматическое монтирование SSHFS в файле /etc/fstab. Для этого сначала вам придется создать SSH ключ и отправить его на удалённый сервер. Создайте новый ключ:

Затем передайте его на сервер:

Когда ключ будет загружен, будет достаточно передать утилите в опциях монтирования путь к ключу. Чтобы убедится, что всё работает выполните:

sshfs -o identityfile=

Если всё работает, можно составить сточку конфигурации для /etc/fstab:

sudo vi /etc/fstab

root@192.168.56.103:/ /mnt fuse.sshfs noauto,x-systemd.automount,_netdev,follow_symlinks,identityfile=/home/sergiy/.ssh/id_dsa,allow_other,default_permissions,reconnect 0 0

Путь к файлу ключа должен быть полным, поэтому замените имя пользователя на своё. Для того, чтобы не получать ошибок доступа при записи желательно чтобы имя пользователя на локальной машине и на удалённой совпадали. Или же, можно указать ID пользователя и группы владельца во время монтирования. Сначала посмотрите UID и GID текущего пользователя:

cat /etc/passwd | grep $USER

В данном случае, это 1000. Первая цифра — это UID, вторая — GID. Затем передайте их в опциях монтирования uid и gid:

root@192.168.56.103:/ /mnt fuse.sshfs uid=1000,gid=1000,noauto,x-systemd.automount,_netdev,follow_symlinks,identityfile=/home/sergiy/.ssh/id_dsa,allow_other,default_permissions,reconnect 0 0

Теперь всё должно работать.

Выводы

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

Источник

Оцените статью