SSHFS (SSH Filesystem) — это клиент файловой системы на основе FUSE для монтирования удаленных каталогов по SSH-соединению. SSHFS использует протокол SFTP, который является подсистемой SSH и включен по умолчанию на большинстве серверов SSH.
По сравнению с другими протоколами сетевой файловой системы, такими как NFS и Samba, преимущество SSHFS заключается в том, что он не требует какой-либо дополнительной настройки на стороне сервера. Для использования SSHFS вам нужен только SSH-доступ к удаленному серверу.
Поскольку SSHFS использует SFTP , все передаваемые данные между сервером и клиентом должны быть зашифрованы и расшифрованы. Это приводит к слегка ухудшенной производительности по сравнению с NFS и более высокой загрузке ЦП на клиенте и сервере.
Установка SSHFS
Пакеты SSHFS доступны для всех основных операционных систем, и установка довольно проста.
Установка SSHFS в Ubuntu и Debian
SSHFS доступен из репозиториев Ubuntu и Debian по умолчанию. Обновите индекс пакетов и установите клиент sshfs, набрав:
sudo apt update
sudo apt install sshfs
Установка SSHFS на CentOS
В CentOS и других производных Red Hat для установки sshfs выполните следующую команду:
sudo yum install sshfs
Установка SSHFS на macOS
Пользователи macOS могут установить клиент SSHFS, загрузив пакеты FUSE и SSHFS с сайта osxfuse или через Homebrew:
brew cask install osxfuse
brew install sshfs
Установка SSHFS в Windows
Пользователям Windows необходимо установить два пакета, WinFsp и SSHFS-Win.
- WinFsp .
- SSHFS-Win .
Монтирование удаленной файловой системы
Следующие инструкции применимы для всех дистрибутивов Linux и macOS.
Чтобы смонтировать удаленный каталог, пользователь SSH должен иметь доступ к нему. Команда монтирования SSHFS имеет следующий вид:
sshfs [user@]host:[remote_directory] mountpoint [options]
Команда sshfs прочитает файл конфигурации SSH и будет использовать настройки для каждого хоста. Если удаленный каталог не указан, по умолчанию используется домашний каталог удаленного пользователя.
Например, чтобы смонтировать домашний каталог пользователя с именем «linuxize» на удаленном хосте с IP-адресом «192.168.121.121», сначала создайте каталог, который будет служить точкой монтирования, это может быть любое местоположение:
mkdir ~/linuxizeremote
Затем используйте команду sshfs для монтирования удаленного каталога:
sshfs linuxize@192.168.121.121:/home/linuxize /home/linuxize/linuxizeremote
Вам будет предложено ввести пароль пользователя. Чтобы не вводить пароль каждый раз, когда вы монтируете удаленный каталог, генерируйте SSH-ключи и настраивайте Passwordless SSH Login .
Теперь вы можете взаимодействовать с каталогами и файлами, расположенными на удаленном сервере, так же, как и с локальными файлами. Например, вы можете редактировать, удалять, переименовывать или создавать новые файлы и каталоги.
Если вы хотите постоянно смонтировать удаленный каталог, вам нужно отредактировать /etc/fstab
файл локального компьютера и добавить новую запись о монтировании. Таким образом, когда ваша система загружается, она автоматически монтирует удаленный каталог.
Чтобы смонтировать удаленный каталог через SSHFS /etc/fstab
, используйте fuse.sshfs
в качестве типа файловой системы.
/etc/fstab
user@host:/remote/dir /local/mountpoint fuse.sshfs defaults 0 0
При создании постоянного монтирования убедитесь, что вы можете подключить удаленный хост с использованием аутентификации на основе ключа SSH.
Монтирование удаленной файловой системы в Windows
Пользователи Windows могут использовать проводник Windows для сопоставления сетевого диска с удаленным каталогом на сервере SSH.
Откройте проводник Windows, щелкните правой кнопкой мыши «Этот компьютер» и выберите «Подключить сетевой диск». Выберите диск для монтирования и в поле «Папка» введите удаленного пользователя, сервер и путь в следующем формате:
\sshfsuser@host[PATH]
На момент написания этой статьи SSHFS-Win не поддерживает аутентификацию на основе ключей, поэтому необходимо настроить удаленный ssh-сервер для принятия аутентификации на основе пароля.
Для более подробной информации обратитесь к руководству по SSHFS-Win .
Размонтирование удаленной файловой системы
Чтобы отсоединить смонтированную файловую систему, используйте команду umount
или, fusermount
а затем каталог, в котором она была смонтирована (точка монтирования):
fusermount -u /local/mountpoint
umount /local/mountpoint
Вывод
Из этого руководства вы узнали, как использовать SSHFS для монтирования удаленного каталога через SSH. Это может быть полезно, когда вы хотите взаимодействовать с удаленными файлами с помощью приложений на локальном компьютере.
Для получения полного списка опций sshfs введите man sshfs
свой терминал.
Вы также можете ограничить доступ пользователей к их домашнему каталогу, настроив среду SFTP Chroot Jail и изменив порт SSH по умолчанию, чтобы добавить дополнительный уровень безопасности вашему серверу.
Содержание
- 1 А зачем?
- 2 Дополнительные компоненты
- 2.1 Под Windows
- 2.2 Под Linux
- 3 Подключение файловой системы
Брррр…Что!? Сейчас поясню. Есть такая штука – файловая система SSHFS, точнее как бы обёртка под файловую систему, благодаря которой можно подключиться к удалённой файловой системе по защищённому протоколу. Вообще, каких только обёрток не придумали, но не будем сейчас углубляться в историю, а покажем на практике, как это работает. Примечательно то, что на сервере нам не нужно делать ничего особенного, как был поднят SSH, так он и будет поднят.
А зачем?
- Никогда не знаешь, что будет на рабочей станции, когда нужно удалённо поработать. Обычно я использую WinSCP для передачи данных, но это доп.софт, причём довольно специфичный. А здесь практически чистая поддержка, + фичи использования сетевых дисков.
- Для Linux-систем – вообще супер, т.к. не требует настройки сервера (как например NFS), правда немного съедает производительность за счёт криптографии.
Дополнительные компоненты
Под Windows
- WinFSP, последняя версия с гитхаба;
WinFSP установка под Windows - SSHFS-Win, последняя версия с гитхаба;
SSHFS под Windows
SSHFS-Win требует для своей работы WinFSP, так что ставим по порядку.
Под Linux
# yum install sshfs
Это под мой любимый CentOS. Под другими дистрибутивами – аналогично, скорее всего придётся заменить yum на apt-get Готово!
Подключение файловой системы
После того, как компоненты установлены, просто(!) подключаем сетевой диск по следующему пути:
\sshfs<имя пользователя>@<адрес хоста>
И останется только указать действующие аутентификационные данные этой учётной записи, как наш сетевой диск подключится:
Для Linux соответственно:
# sshfs <login>@<host>:<path> <mount-point>
Всё очень просто! Реально крутая фича, буду пользовать. Если вам показалась эта тема полезной – не поскупитесь на лайк/репост, ну прям душу греет каждый новый отзыв.
Сегодня расскажу как смонтировать папку (например, с сайтами) из Debian в Windows 10 по SSH (SFTP) с удобным включением/выключением. Под нужным пользователем (www-data) с нужными правами.
Ниже длинное вступление о том как и зачем мне это нужно. Его можно промотать.
Те кто читал мои посты в блоге и видел видосики на канале знают что в основном я занимаюсь разработкой своих сайтов на WordPress, Yii, Laravel. Основной инструмент — PhpStorm. Боевые проекты хостятся на разных вдсках в основном это FastVPS и RuWEB. Везде Debian + Nginx и везде более менее стандартный конфиг (с поправкой на версии и нагрузку кажого из проектов). Всего порядка десяка вдсок.
Разработка и бэкапы на локальной машине под Windows 10, где крутится усредненный аналог боевой конфиги в VirtualBox. Т.е. дев сервер сейчас это Debian 10 + Nginx 1.15.
Разработка и деплой на rsync
Со всех вдсок sh скрипт с помощью
ssh + rsync + mysqldump собирает текущие версии проектов и в итоге на дев инстансте всегда актуальные данные любого из проектов. На деве ведется разработка, тестирование, минификация, обфускация и т.д.После чего тем же скриптом изменения деплоятся на прод, на конкретную вдску. Git используется только на деве.
Я знаю про Docker
Эта схема не тренд, а мой личный велосипед. Логичнее было все это хозяйство контейнезировать и деплоить через гит. Однако некоторые проекты контейнезировать без потерь крайне сложно, а городить разные инфраструктуры при работе в одни руки не эффективно. Мой велосипед вполне успешно работает уже много лет, но есть одна проблема, над которой я бьюсь столько же лет сколько велосипед существует.
Проблема на самом деле в PhpStorm
В PhpStorm когда вы создаете проект из ранее созданных файлов ( Create New Project from Existing Files ) у вас есть по сути два выбора — файлы проекта расположены локально или удаленно. Если создать проект из удаленных файлов, то PhpStorm будет скачивать их все на локальный диск для индексации. А при изменении закачивать их обратно на удаленный сервер (например по SFTP). Это не проблема, когда разработка идет на одном компьютере.
Разработка на разных компах, в разных сетях
Однако я работаю сразу на 3х — стационарный десктоп под Windows 10, два ноутбука. Один ноут используется дома (нравится мне менять места и позы во время работы), второй используется реже — вне дома. И в этом случае возникает сложность синхронизации локальных проектов одного и того же удаленного проекта. Особенно если это проекты с множеством мелких файлов. Например Laravel c Laravel Mix. Короче жуткая головная боль.
Монтирование папки из Debian все бы решило
Куда проще если бы можно было подмонтировать удаленную папку сайта и создавать проект в PhpStorm как с локальными файлами. В Ubuntu это делается элементарно, а вот под виндой все на порядок сложнее.
Вариант с Samba
В принципе дома у меня работала схема с Samba сервером на дев виртуалке под юзером www-data. Но если работать с дев сервером с улицы (через проброс портов через роутер) и если домашний ip динамический, то возникает несколько сложностей — нужно каждый раз менять ip, пробрасывать порт в роутере ещё и на самбу (лишняя уязвимость), перемонтировать диски. Короче хотелось так чтобы как в Ubuntu. И выход нашелся.
Монтирование папки из Linux (Debian) в Windows по SFTP
Для монтирования папки из Linux в Window 10 по SFTP я использую связку billziss-gh/winfsp + billziss-gh/sshfs-win . WinFSP — это порт https://github.com/libfuse/sshfs под винду. А sshfs — это как раз та сетевая файловая система что используется в Ubuntu для монтирования по SFTP. Как я и хотел.
Итак ставим сначала WinFSP, затем SSHFS-Win. Сразу после перезагрузки диски папки можно будет легко монтировать прямо из проводника Windows 10. См. картинку.
Монтирование папки через проводник в SSHFS-Win
Однако в моем случае это не решило проблему.
Нестандартные порты SSH при монтировании
При монтировании папки через проводник вы можете указать путь до папки на сервере, но не можете указать порт SSH, если ssh висит не на 22. Это можно сделать в командной строке
net use Z: sshfs[LOCUSER=]REMUSER@HOST[!PORT][PATH] |
Но тогда:
- проводник, а соотв. и PhpStorm не увидит примонтированный диск
- логин/пароль придется вводить каждый раз.
Есть ощущение что это все можно решить если глубоко погрязнуть в скрипты настройки SSHFS-Win, однако здесь есть и два GUI это SiriKali и SSHFS-Win-Manager .
SiriKali мне жутко не понравился, а вот SSHFS-Win-Manager прижился. Собственно его использование решает почти все проблемы для монтирования дисков из Linux в Windows 10 по SFTP. Я напишу о его настройке чуть ниже. Однако в моем случае просто монтирования было не достаточно.
SSHFS-Win проблемы с юзером и правами на новые папки и файлы
Я ведь все эту чехарду устроил ради разработки и мне нужно чтобы работа на подмонтированном диске была из под юзера
www—data юзер www-data по умолчанию не имеет доступа к консоли и под ним нельзя примонтировать диск. Также SSHFS-Win создает НОВЫЕ папки и файлы с правами 0700 (для уже созданных не меняет), а мне надо чтобы было 0755 на папки и 0644 на файлы.
Разрешаю монтирование под www-data
Это самое сомнительное решение. Во всей этой схеме. Однако для виртуалки за роутером я решил что сойдет.
sudo passwd www—data # задаем пароль для www-data |
И в файле
/etc/passwd правлю строку:
www—data:x:33:33:www—data:/home:/bin/bash |
Обрати внимание что я сменил и папку юзера на ту, которую буду монтировать. Перезагружаю виртуалку и все — под www-data можно логиниться и монтировать диски.
Права на вновь создаваемые папки и файлы под SSHFS-Win
Для задания нужных прав у WinFSP есть опции
create_file_umask и
create_dir_umask . Их можно использовать в командной строке, однако проще в SSHFS-Win-Manager . Смотри картинки ниже.
Настройки SSHFS-Win-Manager
Здесь я создал два диска с одной буквой. Все эти маунты ведут на одну и туже виртуалку VirtualBox. Но один на внутренний IP, а второй через внешний динамический IP (через роутер с проброшенными портами на 80, 443 и ssh). Т.е. дома я монтирую верхний вариант и проброс в роутере могу вообще закрыть. А если работаю вне дома, то монтирую нижний. При этом для PhpStorm это всегда один и тотже локальный диск V. Невероятно удобно.
На этой картинки расширенные настройки, которые позволяют выставить нужные мне права (0755 / 0644). Если тебе нужны другие права гугли “permission umask ”.
На данный момент схема хорошо работает. На 4G Laravel проект под PhpStorm индексируется на 20-30 секунд, что более чем приемлемо. Если есть что дополнить или вопросы — пиши комменты (могут отлетать в премодерацию — это норма, я одобрю и отвечу). Также я есть в Телеграм.
SSHFS-Win · SSHFS for Windows
Download
GUI Frontends
SSHFS-Win is a minimal port of SSHFS to Windows. Under the hood it uses Cygwin for the POSIX environment and WinFsp for the FUSE functionality.
Installation
- Install the latest version of WinFsp.
- Install the latest version of SSHFS-Win. Choose the x64 or x86 installer according to your computer’s architecture.
Both can also be easily installed with WinGet:
winget install WinFsp.WinFsp; winget install SSHFS-Win.SSHFS-Win
Basic Usage
Once you have installed WinFsp and SSHFS-Win you can map a network drive to a directory on an SSHFS host using Windows Explorer or the net use
command.
Windows Explorer
In Windows Explorer select This PC > Map Network Drive and enter the desired drive letter and SSHFS path using the following UNC syntax:
\sshfsREMUSER@HOST[PATH]
The first time you map a particular SSHFS path you will be prompted for the SSHFS username and password. You may choose to save these credentials with the Windows Credential Manager in which case you will not be prompted again.
In order to unmap the drive, right-click on the drive icon in Windows Explorer and select Disconnect.
Command Line
You can map a network drive from the command line using the net use
command:
> net use X: \sshfsbillziss@mac2018.local
The password is invalid for \sshfsbillziss@mac2018.local.
Enter the user name for 'sshfs': billziss
Enter the password for sshfs:
The command completed successfully.
You can list your net use
drives:
$ net use
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
X: \sshfsbillziss@mac2018.local
WinFsp.Np
The command completed successfully.
Finally you can unmap the drive as follows:
$ net use X: /delete
X: was deleted successfully.
UNC Syntax
The complete UNC syntax is as follows:
\sshfs[LOCUSER=]REMUSER@HOST[!PORT][PATH]
\sshfs.r[LOCUSER=]REMUSER@HOST[!PORT][PATH]
\sshfs.k[LOCUSER=]REMUSER@HOST[!PORT][PATH]
\sshfs.kr[LOCUSER=]REMUSER@HOST[!PORT][PATH]
REMUSER
is the remote user (i.e. the user on the SSHFS host whose credentials are being used for access).HOST
is the SSHFS host.PORT
is the remote port on the SSHFS host (optional; default is 22).PATH
is the remote path. This is interpreted as follows:- The
sshfs
prefix maps toHOST:~REMUSER/PATH
on the SSHFS host (i.e. relative toREMUSER
‘s home directory). - The
sshfs.r
prefix maps toHOST:/PATH
on the SSHFS host (i.e. relative to theHOST
‘s root directory). - The
sshfs.k
prefix maps toHOST:~REMUSER/PATH
and uses the ssh key in%USERPROFILE%/.ssh/id_rsa
(where%USERPROFILE%
is the home directory of the local Windows user). To specify a different specific key, define an alias of the HOST with the specific private ssh key you want to use in the ssh config. BEWARE: only keys without a pass phrase are supported. - The
sshfs.kr
prefix maps toHOST:/PATH
and uses the ssh key in%USERPROFILE%/.ssh/id_rsa
. To specify a different specific key, define an alias of the HOST with the specific private ssh key you want to use in the ssh config. BEWARE: only keys without a pass phrase are supported.
- The
LOCUSER
is the local Windows user (optional;USERNAME
orDOMAIN+USERNAME
format).- Please note that this functionality is rarely necessary with latest versions of WinFsp.
GUI front ends
There are currently 2 GUI front ends for SSHFS-Win: SiriKali and SSHFS-Win-Manager.
SiriKali
SiriKali is a GUI front end for SSHFS-Win (and other file systems). Instructions on setting up SiriKali for SSHFS-Win can be found at this link. Please report problems with SiriKali in its issues page.
SiriKali supports:
- Password authentication.
- Public key authentication.
- Key Agents and KeePass 2.
SSHFS-Win-Manager
SSHFS-Win-Manager is a new GUI front end specifically for SSHFS-Win with a user-friendly and intuitive interface. SSHFS-Win-Manager integrates well with Windows and can be closed to the system tray. Please report problems with SSHFS-Win-Manager in its issues page.
SSHFS-Win-Manager supports:
- Password authentication.
- Public key authentication.
Using Jump Hosts
sshfs-win itself does not currently support ssh tunneling, but something similar can be achieved using the built-in openSSH of windows.
-
use openSSH t create a local port forward through the jump host to the target
ssh -L <origin port of jump connection>:<target of tunnel>:<port of target to target> <adress of tunnel jump host>
All standard settings of the ssh config may be used in this step.
Reference example ssh config:
create the file C:Users<UserName>.sshconfig and/or add the following lines: Host <jump host alias> Hostname <adress of jump host> User <user name at jump host> IdentityFile <path to private key for login to the jump host, may have a pass phrase> IdentitesOnly yes
-
connect to the target server using the following
\sshfsREMUSER@localhost!<origin port of jump connection>
or similar.
Advanced Usage
It is possible to use the sshfs-win.exe
and sshfs.exe
programs directly for advanced usage scenarios. Both programs can be found in the bin
subdirectory of the SSHFS-Win
installation (usually Program FilesSSHFS-Winbin
).
The sshfs-win.exe
program is useful to launch sshfs.exe
from a cmd.exe
prompt (sshfs-win cmd
) or to launch sshfs.exe
under the control of the WinFsp Launcher (sshfs-win svc
). The sshfs-win.exe
program SHOULD NOT be used from Cygwin. The sshfs-win.exe
program has the following usage:
usage: sshfs-win cmd SSHFS_COMMAND_LINE
SSHFS_COMMAND_LINE command line to pass to sshfs
usage: sshfs-win svc PREFIX X: [LOCUSER] [SSHFS_OPTIONS]
PREFIX Windows UNC prefix (note single backslash)
sshfs[.SUFFIX][LOCUSER=]REMUSER@HOST[!PORT][PATH]
sshfs: remote user home dir
sshfs.r: remote root dir
sshfs.k: remote user home dir with key authentication
sshfs.kr: remote root dir with key authentication
LOCUSER local user (DOMAIN+USERNAME)
REMUSER remote user
HOST remote host
PORT remote port
PATH remote path (relative to remote home or root)
X: mount drive
SSHFS_OPTIONS additional options to pass to SSHFS
The sshfs.exe
program can be used with an existing Cygwin installation, but it requires prior installation of FUSE for Cygwin on that Cygwin installation. FUSE for Cygwin is included with WinFsp and can be installed on a Cygwin installation by executing the command:
$ sh "$(cat /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/WinFsp/InstallDir | tr -d '')"/opt/cygfuse/install.sh
FUSE for Cygwin installed.
Project Organization
This is a simple project:
sshfs
is a submodule pointing to the original SSHFS project.sshfs-win.c
is a simple wrapper around the sshfs program that is used to implement the «Map Network Drive» functionality.sshfs-win.wxs
is a the Wix file that describes the SSHFS-Win installer.patches
is a directory with a couple of simple patches over SSHFS.Makefile
drives the overall process of building SSHFS-Win and packaging it into an MSI.
Building
In order to build SSHFS-Win you will need Cygwin and the following Cygwin packages:
- gcc-core
- git
- libglib2.0-devel
- make
- meson
- patch
You will also need:
-
FUSE for Cygwin. It is included with WinFsp and can be installed on a Cygwin installation by executing the command:
$ sh "$(cat /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/WinFsp/InstallDir | tr -d '')"/opt/cygfuse/install.sh FUSE for Cygwin installed.
-
Wix toolset. This is a native Windows package that is used to build the SSHFS-Win MSI installer.
To build:
- Open a Cygwin prompt.
- Change directory to the sshfs-win repository.
- Issue
make
. - The sshfs-win repository includes the upstream SSHFS project as a submodule; if you have not already done so, you must initialize it with
git submodule update --init sshfs
.
License
SSHFS-Win uses the same license as SSHFS, which is GPLv2+. It interfaces with WinFsp which is GPLv3 with a FLOSS exception.
It also packages the following components:
- Cygwin: LGPLv3
- GLib2: LGPLv2
- SSH: «all components are under a BSD licence, or a licence more free than that»
SSHFS (SSH Filesystem) — это клиент файловой системы на основе FUSE для монтирования удаленных каталогов через SSH-соединение. SSHFS использует протокол SFTP, который является подсистемой SSH и включен по умолчанию на большинстве серверов SSH.
По сравнению с другими протоколами сетевой файловой системы, такими как NFS и Samba, преимущество SSHFS состоит в том, что он не требует дополнительной настройки на стороне сервера. Чтобы использовать SSHFS, вам нужен только SSH-доступ к удаленному серверу.
Поскольку SSHFS использует SFTP , все передаваемые данные между сервером и клиентом должны быть зашифрованы и расшифрованы. Это приводит к небольшому снижению производительности по сравнению с NFS и более высокой загрузке ЦП на клиенте и сервере.
Из этого туториала Вы узнаете, как установить клиент SSHFS в Linux, macOS и Windows и как смонтировать удаленный каталог.
Установка SSHFS
Пакеты SSHFS доступны для всех основных операционных систем, и установка довольно проста.
Установка SSHFS в Ubuntu и Debian
SSHFS доступен из репозиториев Ubuntu и Debian по умолчанию. Обновите индекс пакетов и установите клиент sshfs, набрав:
sudo apt update
sudo apt install sshfs
Установка SSHFS на CentOS
В CentOS и других производных от Red Hat выполните следующую команду для установки sshfs:
sudo yum install sshfs
Установка SSHFS на macOS
Пользователи macOS могут установить клиент SSHFS, загрузив пакеты FUSE и SSHFS с сайта osxfuse или через Homebrew:
brew cask install osxfuse
brew install sshfs
Установка SSHFS в Windows
Пользователям Windows необходимо установить два пакета: WinFsp и SSHFS-Win.
- WinFsp .
- SSHFS-Win .
Монтирование удаленной файловой системы
Следующие инструкции применимы для всех дистрибутивов Linux и macOS.
Чтобы смонтировать удаленный каталог, пользователь SSH должен иметь к нему доступ. Команда монтирования SSHFS принимает следующий вид:
sshfs [[email protected]]host:[remote_directory] mountpoint [options]
Команда sshfs прочитает файл конфигурации SSH и использует настройки для каждого хоста. Если удаленный каталог не указан, по умолчанию используется домашний каталог удаленного пользователя.
Например, чтобы смонтировать домашний каталог пользователя с именем «linuxize» на удаленном хосте с IP-адресом «192.168.121.121», сначала создайте каталог, который будет служить точкой монтирования, это может быть любое место, которое вы хотите:
mkdir ~/linuxizeremote
Затем используйте команду sshfs для монтирования удаленного каталога:
sshfs [email protected]:/home/linuxize /home/linuxize/linuxizeremote
Вам будет предложено ввести пароль пользователя. Чтобы не вводить пароль каждый раз при монтировании удаленного каталога, сгенерируйте ключи SSH и настройте вход SSH без пароля .
Теперь вы можете взаимодействовать с каталогами и файлами, расположенными на удаленном сервере, точно так же, как и с локальными файлами. Например, вы можете редактировать, удалять, переименовывать или создавать новые файлы и каталоги.
Если вы хотите навсегда смонтировать удаленный каталог, вам необходимо отредактировать файл /etc/fstab
на локальном компьютере и добавить новую запись монтирования. Таким образом, когда ваша система загружается, она автоматически монтирует удаленный каталог.
Чтобы смонтировать удаленный каталог через SSHFS из /etc/fstab
, используйте fuse.sshfs
в качестве типа файловой системы.
/etc/fstab
При создании постоянного монтирования убедитесь, что вы можете подключить удаленный хост с помощью аутентификации на основе ключа SSH.
Монтирование удаленной файловой системы в Windows
Пользователи Windows могут использовать проводник Windows, чтобы подключить сетевой диск к удаленному каталогу на SSH-сервере.
Откройте проводник Windows, щелкните правой кнопкой мыши «Этот компьютер» и выберите «Подключить сетевой диск». Выберите диск для монтирования и в поле «Папка» введите удаленного пользователя, сервер и путь в следующем формате:
На момент написания этой статьи SSHFS-Win не поддерживает аутентификацию на основе ключей, поэтому удаленный сервер SSH должен быть настроен для принятия аутентификации на основе пароля.
Для получения более подробной информации обратитесь к руководству по SSHFS-Win .
Отключение удаленной файловой системы
Чтобы отсоединить смонтированную файловую систему, используйте команду umount
или fusermount
после которой fusermount
каталог, в котором она была смонтирована (точка монтирования):
fusermount -u /local/mountpoint
umount /local/mountpoint
Выводы
В этом руководстве вы узнали, как использовать SSHFS для монтирования удаленного каталога через SSH. Это может быть полезно, если вы хотите взаимодействовать с удаленными файлами с помощью приложений на локальном компьютере.
Чтобы получить полный список опций sshfs, введите в терминале man sshfs
.
Вы также можете ограничить доступ пользователей к их домашнему каталогу, настроив среду SFTP Chroot Jail и изменив порт SSH по умолчанию, чтобы добавить дополнительный уровень безопасности на ваш сервер.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Введение
SSHFS — хороший инструмент для подключения сетевых дисков. При стабильном сетевом соединении связь с таким сетевым диском может держаться неделями без разрыва. Несколько проектов могут использовать один и тот же диск с помощью этого решения.
Зачем это мне?
Есть несколько сценариев использования, для которых потребуется сетевой диск:
- Объединение данных между двумя серверами. При сетевом соединении данные не повреждаются в случае, если они одновременно не используются на запись на обеих машинах.
- Передача данных на сервер, представление файлов сайта прямо в обозревателе файлов.
- Резервное копирование необходимых данных.
Поднять SSHFS сервер проще простого, если функционирует SSH доступ и SFTP доступ, то дополнительных действий не требуется. SSHFS — это нечто вроде продолжения технологии SFTP.
Привязывание к каталогам
Вы можете привязать определённого пользователя к конкретной директории на удалённой системе. Это может быть выполнено путём редактирования файла sshd_config:
/etc/ssh/sshd_config ….. Match User «someuser» ChrootDirectory «/chroot/%u» ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no …..
SSHFS для Linux
С клиентом для Linux дело обстоит просто. Сначала установите его командой для Ubuntu:
sudo apt update && sudo apt update && sudo apt install sshfs
Для CentOS:
yum install sshfs
После установки можете осуществлять подключение к серверу командой:
sshfs login@ipaddress:route mountpoint -p port
Вместе login укажите логин на сервере, к которому подключаетесь, вместо ipaddress укажите IP адрес вместо route укажите путь на сервере, к которому подключаетесь. mountpoint является точкой монтирования в локальной ОС. Папка должна существовать! Вместо port укажите порт, на котором слушает SSH сервер.
SSHFS также умеет конвертировать ID локального пользователя, подробнее смотрите в man по sshfs.
Для размонтирования используйте команду:
fusermount -u mountpoint
Где mountpoint — точка подключения, которую указывали при подключении.
SSHFS клиент для Windows
С клиентом для Windows могут быть сложности. Например, именование файлов в ext4 допустимо в верхнем и нижнем регистре, а Windows не понимает разницы между ними. Например, файлы README и readme для Windows будут считаться одним файлом. Так что будьте внимательны при использовании SSHFS на Windows.
Вы можете использовать графический интерфейс для упрощения работы с SSHFS в Windows. Этим способом и будем пользоваться.
Для начала скачайте и установите программы:
- sshfs-win GitHub
- Стабильную версию WinFsp
- sshfs-win-manager
После того, как всё установили, у Вас появится новая установленная программа. Найдите её в меню пуск и запустите. Она называется SSHFS Win Manager.
Нажмите кнопку «Add connection» и заполните поля, указав настройки подключения:
- В поле NAME укажите удобное имя. Под ним диск будет отображаться в проводнике.
- В поле IP/Host укажите IP адрес а в поле Port укажите TCP порт, по которому слушает SSH-сервер. Если используется проброс портов, то указываете порт, на который сделан проброс (порт для внешнего мира).
- В поле USER укажите пользователя в Linux на сервер, к которому подключаетесь.
- В выборе Authentification method выберите Password, если используется авторизация по паролю или Private key (file), если используется SSH RSA ключ.
- В поле PASSWORD укажите пароль, но только в случае, если используется авторизация по паролю.
- В поле KEY FILE укажите путь к id_rsa Подробнее про этот файл читайте в инструкции Использование SSH с доступом по ключам.
- В поле Remote укажите директорию, под которой будет подан сетевой диск. То есть указанная директория превратится в сетевой диск.
- В выборе Drive Letter выберите букву диска, под которой диск должен отображаться в проводнике. Будьте внимательны, он не должен повторяться, то есть буква диска должна быть уникальной!
Нажмите Save, а затем на значок вставки штепселя в розетку. Проверьте, появился ли новый диск в проводнике. Если да, значит настроили всё верно. Теперь его можно использовать.
SSHFS (SSH Filesystem) – это клиент файловой системы на основе FUSE для монтирования удаленных каталогов по SSH-соединению. SSHFS использует протокол SFTP, который является подсистемой SSH и включен по умолчанию на большинстве серверов SSH.
По сравнению с другими протоколами сетевой файловой системы, такими как NFS и Samba, преимущество SSHFS заключается в том, что он не требует какой-либо дополнительной настройки на стороне сервера. Для использования SSHFS вам нужен только SSH-доступ к удаленному серверу.
Поскольку SSHFS использует SFTP, все передаваемые данные между сервером и клиентом должны быть зашифрованы и расшифрованы. Это приводит к слегка ухудшенной производительности по сравнению с NFS и более высокой загрузке ЦП на клиенте и сервере.
Из этой статьи вы узнаете, как установить клиент SSHFS в Linux, macOS и Windows и как смонтировать удаленный каталог.
Пакеты SSHFS доступны для всех основных операционных систем, и установка довольно проста.
SSHFS доступен из репозиториев Ubuntu и Debian по умолчанию. Обновите индекс пакетов и установите клиент sshfs, набрав:
sudo apt updatesudo apt install sshfs |
В CentOS и других производных Red Hat для установки sshfs выполните следующую команду:
Пользователи macOS могут установить клиент SSHFS, загрузив пакеты FUSE и SSHFS с сайта osxfuse или через Homebrew:
brew cask install osxfusebrew install sshfs |
Пользователям Windows необходимо установить два пакета, WinFsp и SSHFS-Win.
- WinFsp.
- SSHFS-Win.
Следующие инструкции применимы для всех дистрибутивов Linux и macOS.
Чтобы смонтировать удаленный каталог, пользователь SSH должен иметь доступ к нему. Команда монтирования SSHFS имеет следующий вид:
sshfs [user@]host:[remote_directory] mountpoint [options] |
Команда sshfs прочитает файл конфигурации SSH и будет использовать настройки для каждого хоста. Если удаленный каталог не указан, по умолчанию используется домашний каталог удаленного пользователя.
Например, чтобы смонтировать домашний каталог пользователя с именем «andreyex» на удаленном хосте с IP-адресом «192.168.111.011», сначала создайте каталог,который будет служить точкой монтирования, это может быть любое местоположение:
Затем используйте команду sshfs для монтирования удаленного каталога:
sshfs andreyex@192.168.111.011:/home/andreyex /home/andreyex/andreyexremote |
Вам будет предложено ввести пароль пользователя. Чтобы избежать ввода пароля каждый раз, когда вы монтируете удаленный каталог, генерируйте SSH-ключи и настраивайте Passwordless SSH Login.
Теперь вы можете взаимодействовать с каталогами и файлами, расположенными на удаленном сервере, так же, как и с локальными файлами. Например, вы можете редактировать, удалять, переименовывать или создавать новые файлы и каталоги.
Если вы хотите автоматически монтировать удаленный каталог, вам нужно отредактировать файл /etc/fstab локального компьютера и добавить новую запись о монтировании. Таким образом, когда ваша система загружается, она автоматически монтирует удаленный каталог.
Чтобы смонтировать удаленный каталог через SSHFS /etc/fstab, используйте fuse.sshfs в качестве типа файловой системы.
/etc/fstab
user@host:/remote/dir /local/mountpoint fuse.sshfs defaults 0 0 |
При создании постоянного монтирования убедитесь, что вы можете подключить удаленный хост с использованием аутентификации на основе ключа SSH.
Пользователи Windows могут использовать проводник Windows для сопоставления сетевого диска с удаленным каталогом на сервере SSH.
Откройте проводник Windows, щелкните правой кнопкой мыши «Мой компьютер» и выберите «Подключить сетевой диск». Выберите диск для монтирования и в поле «Папка» введите удаленного пользователя, сервер и путь в следующем формате:
На момент написания этой статьи SSHFS-Win не поддерживает аутентификацию на основе ключей, поэтому необходимо настроить удаленный ssh-сервер для принятия аутентификации на основе пароля.
Чтобы отсоединить смонтированную файловую систему, используйте команду umount или, fusermount а затем каталог, в котором она была смонтирована (точка монтирования):
fusermount -u /local/mountpoint |
Из этой статьи вы узнали, как использовать SSHFS для монтирования удаленного каталога через SSH. Это может быть полезно, когда вы хотите взаимодействовать с удаленными файлами с помощью приложений на локальном компьютере.
Для получения полного списка опций sshfs введите man sshfs в свой терминал.