diff --git a/content/articles/sshfs/index.md b/content/articles/sshfs/index.md new file mode 100644 index 0000000..1fcd150 --- /dev/null +++ b/content/articles/sshfs/index.md @@ -0,0 +1,116 @@ ++++ +title = "SSHFS: Монтирование удаленных файловых систем через SSH" +date = 2025-03-09 +description = "SSHFS (SSH File System) позволяет монтировать удаленные файловые системы через SSH, обеспечивая безопасный и удобный доступ к файлам на удаленных серверах." + +[taxonomies] +tags = ["sshfs", "ssh", "server"] + +[extra] +quick_navigation_buttons = true +toc = false +mermaid = false +social_media_card = "social_cards/index-sshfs.webp" ++++ + +## Введение + +[SSHFS](https://github.com/libfuse/sshfs) – это мощный инструмент для работы с удаленными файлами, обеспечивающий удобство и безопасность благодаря использованию SSH. Он полезен для резервного копирования, совместной работы и доступа к файлам на удаленных серверах без сложной настройки. + +## Установка SSHFS + +```bash +sudo pacman -S sshfs +``` +## Монтирование удаленной файловой системы + +1. Создайте локальную папку для монтирования: + +```bash +sudo mkdir /mnt/sshfs +``` +2. Подключите удаленную файловую систему: + +```bash +sshfs user@remote_host:/remote_folder /mnt/sshfs +``` + + - `user` – имя пользователя на удаленном сервере + - `remote_host` – IP-адрес или доменное имя сервера + - `/remote_folder` – каталог, который нужно смонтировать + - `/mnt/sshfs` – локальная папка, куда будет смонтирован удаленный ресурс + +Если используется нестандартный порт указать можно так: +```bash +sshfs -p 223 user@remote_host:/remote_folder /mnt/sshfs +``` + +## Автоматическое монтирование при загрузке + +Добавьте в `/etc/fstab` строку: + +```ini +user@remote_host:/remote_folder /mnt/sshfs fuse.sshfs defaults,_netdev,user,idmap=user,allow_other,reconnect 0 0 +``` + +Создайте файл с учетными данными `~/.sshfs_credentials`: + +```bash +echo "password" > ~/.sshfs_credentials +chmod 600 ~/.sshfs_credentials +``` + +с содежимым: + +```ini +username=ТВОЙ_ЛОГИН +password=ТВОЙ_ПАРОЛЬ +``` + +Монтирование с учётом `~/.sshfs_credentials` + +```bash +sshfs -o password_stdin,credentials=~/.sshfs_credentials user@remote_host:/remote_folder /mnt/sshfs +``` + +## Размонтирование файловой системы + +```bash +fusermount -u /mnt/sshfs +``` + +**Дополнительные параметры** + +- `-o reconnect` – автоматически переподключаться при разрыве связи +- `-o allow_other` – разрешить доступ другим пользователям системы +- `-o idmap=user` – сопоставлять идентификаторы пользователей + + +## Монтирование с помощью systemd + +{{ admonition(type="danger", icon="tip", title="Внимание!", text="Авторизация на сервере должна проходить по ключу") }} + +Создаём юнит-файл systemd `~/.config/systemd/user/server.service` + +```ini +[Unit] +Description=Mount /mnt/sshfs/ + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=sshfs -p 666 user@remote_host:/remote_folder /mnt/sshfs +ExecStop=umount /mnt/sshfs/ + +[Install] +WantedBy=default.target +``` + +# Запуск и автозагрузка + +```bash +systemctl --user daemon-reload +systemctl --user enable now sshfs-myserver.mount +``` + +Теперь `/mnt/sshfs/` автоматически монтируется при загрузке. diff --git a/content/articles/sshfs/social_cards/index-sshfs.webp b/content/articles/sshfs/social_cards/index-sshfs.webp new file mode 100644 index 0000000..4a9fc7e Binary files /dev/null and b/content/articles/sshfs/social_cards/index-sshfs.webp differ