sshfs позволяет монтировать удаленную файловую систему через обычное SSH-соединение. То есть если у вас есть SSH-доступ к серверу, можно подключить его каталог как локальную директорию. Это не самый быстрый способ: SSHFS работает через FUSE в user space, плюс само SSH-соединение добавляет накладные расходы. Но для некоторых задач это очень удобно. Особенно когда: SSH уже открыт; NFS/SMB поднимать не хочется; нужен быстрый доступ к отдельному каталогу или нужно временно подключить данные
▪️ Установка:
apt install sshfs
▪️ Для автомонтирования лучше сразу настроить доступ по ключу. Генерируем ключ:
ssh-keygen -t ed25519
Копируем его на удаленный сервер:
ssh-copy-id root@10.20.1.6
Можно подключаться и по паролю, но для systemd-автомонтирования это неудобно: пароль придется вводить интерактивно. С ключом все проще и надежнее.
▪️ Пример. Допустим, нужно смонтировать каталог:
root@10.20.1.6:/etc/letsencrypt
в локальный путь:
/mnt/letsencrypt
Создаем точку монтирования:
mkdir -p /mnt/letsencrypt
Монтируем вручную:
sshfs root@10.20.1.6:/etc/letsencrypt /mnt/letsencrypt
Проверяем:
df -h | grep 10.20.1.6
Размонтировать можно так:
fusermount -u /mnt/letsencrypt
▪️ Теперь сделаем systemd-unit, чтобы монтировать каталог автоматически. Создаем service:
systemctl edit --force --full sshfs-letsencrypt.service
Пример unit-файла:
[Unit]
Description=Mount /etc/letsencrypt over SSHFS
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/sshfs root@10.20.1.6:/etc/letsencrypt /mnt/letsencrypt -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
ExecStop=/usr/bin/fusermount -u /mnt/letsencrypt
[Install]
WantedBy=multi-user.target
Перечитываем systemd:
systemctl daemon-reload
Запускаем:
systemctl start sshfs-letsencrypt.service
Добавляем в автозагрузку:
systemctl enable sshfs-letsencrypt.service
Если нужно размонтировать каталог:
systemctl stop sshfs-letsencrypt.service
▪️ Полезные опции:
•
reconnect - Пытаться восстановить подключение при обрыве.•
ServerAliveInterval=15 - Периодически проверять, живо ли SSH-соединение.•
ServerAliveCountMax=3 - После нескольких неудачных проверок считать соединение мертвым.В примере все сделано от root для простоты. Для постоянной схемы лучше использовать отдельного пользователя с минимальными правами. В systemd можно указать:
User=sftp-user
Group=sftp-user
Но тогда важно, чтобы у этого пользователя были права на точку монтирования и SSH-ключи.
#linux #sshfs
🧑💻 NetworkAdmin