Files
blog.zlinux.ru/content/articles/sshfs/index.md

117 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
+++
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/` автоматически монтируется при загрузке.