Работаем с файлами на удаленном сервере как с локальными: шпаргалка по SSHFS
Когда нужно настроить постоянный и быстрый обмен файлами в локальной сети, мы поднимаем NFS или Samba. Но что делать, если сервер находится далеко в интернете, настраивать сложную шару некогда, а скачивать и закачивать файлы через scp или FileZilla уже надоело?
Тут на помощь приходит SSHFS (Secure Shell File System). Главная прелесть этой штуки в том, что на самом сервере вообще ничего не нужно настраивать. Если у вас есть SSH-доступ к серверу — значит, вы уже можете примонтировать его файловую систему к себе на ПК и работать с ней, как с обычной флешкой.
Делается это буквально в несколько команд.
Установка и подготовка На локальную машину (с которой будем подключаться) ставим пакет sshfs:
sudo apt install sshfs
Далее создаем директорию, которая будет служить точкой монтирования. Лучше всего делать это в своем домашнем каталоге, чтобы не возиться с правами root:
mkdir -p ~/mnt/remote_dir
(Ключ -p автоматически создаст все промежуточные каталоги, если их нет).
Монтируем удаленную директорию Синтаксис предельно простой:
sshfs user@remote_server:/path_to_remote_dir ~/mnt/remote_dir
Например, если я хочу примонтировать каталог My-folder с удаленного сервера (IP: 192.168.1.6) в свою созданную папку, команда будет выглядеть так:
sshfs admin@192.168.1.6:/home/admin/My-folder ~/mnt/remote_dir
После монтирования можно проверить результат командой df -h. Теперь вы можете копировать, удалять, редактировать файлы в IDE или просматривать логи прямо в примонтированной папке. Все изменения моментально происходят на сервере.
Важные нюансы (чтобы не отваливалось) У SSHFS есть особенность: если интернет моргнет, примонтированная папка может намертво зависнуть. Чтобы этого избежать, рекомендую монтировать с параметрами поддержания сессии:
sshfs -o ServerAliveInterval=15 admin@192.168.1.6:/home/admin/My-folder ~/mnt/remote_dir
(Эта опция будет каждые 15 секунд отправлять ping-пакет на сервер, не давая соединению разорваться).
Как размонтировать? Когда работа закончена, директорию нужно отмонтировать. Так как мы монтировали без прав суперпользователя, обычный umount может выдать ошибку прав. Правильнее использовать эту команду:
fusermount -u ~/mnt/remote_dir
(Если получаете ошибку «устройство занято», убедитесь, что вы закрыли все файлы из этой папки и сами вышли из директории в терминале).
Используете ли вы SSHFS в повседневной работе или предпочитаете другие инструменты? Пишите в комменты.
Больше подобных шпаргалок, команд и коротких заметок по Linux и администрированию серверов я регулярно публикую в своем Telegram-канале [Linux для Админов и DevOps]. Буду рад видеть там коллег по цеху, заходите!


