SSHFS: монтируем удалённые каталоги по SSH

SSHFS монтирует удалённый каталог по SSH как локальную папку через FUSE. Файловый менеджер, IDE и обычные cp/ls/nano работают с remote-файлами без отдельного SFTP-клиента и без постоянного scp туда-обратно. Канал – тот же SSH: ключи, порт, ProxyJump, всё знакомое.

Что это и когда уместно

SSHFS (SSH File System) – userspace-ФС на базе FUSE и SSH/SFTP. Удалённый путь появляется в дереве локальных mount-точек. Удобно для:

  • правки конфигов и кода на сервере из локального редактора;
  • быстрого просмотра логов и артефактов без копирования всего дерева;
  • одноразовых задач, где полноценный rsync/NFS избыточен.

Это не замена NFS/CIFS для высоконагруженного shared storage и не лучший выбор для thrashing мелких файлов на высоком latency (node_modules, тяжёлая сборка). Для массового зеркалирования чаще берут rsync; для «жить на remote» – IDE remote / devcontainer. SSHFS – середина: прозрачный mount, пока сеть живая.

Установка

Ubuntu / Debian

sudo apt update
sudo apt install sshfs

CentOS / RHEL / Fedora

# старые yum-системы
sudo yum install sshfs

# Fedora / современные RHEL-клоны
sudo dnf install sshfs

Arch Linux

sudo pacman -S sshfs

macOS

Нужны FUSE for macOS (или аналог) и пакет sshfs. Через Homebrew:

brew install sshfs

На macOS путь отмонтирования и требования к FUSE-драйверу отличаются от Linux – смотрите актуальную инструкцию brew/cask для вашей версии ОС.

Подготовка и монтирование

Исходные данные (пример):

  • хост: example.com
  • пользователь: username
  • remote path: /var/www/html

Локальная точка монтирования:

mkdir -p ~/remote_html

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

sshfs username@example.com:/var/www/html ~/remote_html

После успешного auth (пароль или ключ) содержимое /var/www/html видно в ~/remote_html. Проверка: ls ~/remote_html, mount | grep remote_html.

Работа с файлами

  • Список: ls ~/remote_html
  • Правка: nano ~/remote_html/index.php
  • Копия на локальный диск: cp ~/remote_html/style.css ~/projects/local_style.css

Права и владельцы на remote определяются SSH-пользователем и umask/опциями mount. Локальный chown часто «притворный» (FUSE mapping), не путайте с реальным владельцем на сервере.

Отмонтирование

Linux (fusermount):

fusermount -u ~/remote_html
# или
umount ~/remote_html

Если mount «залип» (сеть оборвалась, процесс держит cwd внутри):

fusermount -uz ~/remote_html
# крайний случай
sudo umount -l ~/remote_html

На macOS чаще umount / diskutil unmount.

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

Нестандартный порт SSH:

sshfs -p 2222 username@example.com:/var/www/html ~/remote_html

Явный ключ:

sshfs -o IdentityFile=~/.ssh/id_rsa username@example.com:/var/www/html ~/remote_html

Частые -o:

  • reconnect – пытаться восстановить сессию после обрыва;
  • ServerAliveInterval=15 – keepalive, меньше «молчаливых» зависаний;
  • compression=yes – иногда помогает на медленных линках и текстовых файлах;
  • allow_other – доступ другим локальным пользователям (нужны настройки FUSE, осторожно с безопасностью);
  • uid=/gid= – маппинг владельца на локальной стороне.

Полный список – man sshfs и репозиторий libfuse/sshfs.

Производительность и безопасность

  • Latency сети = latency каждой мелкой операции (stat, open). IDE с агрессивным индексом по mount может тормозить.
  • SSH multiplexing (ControlMaster/ControlPath в ~/.ssh/config) ускоряет повторные подключения и иногда сам mount.
  • Ключи: chmod 600 на private key, agent или аппаратный ключ, без ключей «для всех» в world-readable каталогах.
  • Не монтируйте production root «на всякий случай» с машины, где много GUI-софта: один ransomware/скрипт с доступом к home увидит и remote.

Краткий чеклист

  • Пакет sshfs + рабочий SSH на хост
  • mkdir локальной точки → sshfs user@host:/path ~/mnt
  • Порт/ключ: -p, -o IdentityFile=...
  • Сняли работу: fusermount -u / umount
  • Для bulk-копий и бэкапов предпочтительнее rsync/scp, не thrashing через FUSE

SSHFS – простой способ «открыть сервер как папку», пока SSH уже есть и не нужен отдельный сетевой FS. Для повседневной правки конфигов и точечной работы с файлами его обычно достаточно; для CI, зеркал и высоконагруженного I/O выбирайте инструменты без FUSE-надбавки на каждую операцию.

Источники и ссылки


Комментарии загружаются…