LINUX.ORG.RU

Монтирование по sshfs через systemd

 , , ,


1

1

Пытаюсь создать демон через systemd для монтирования удаленной дирректории средствами SSHFS Есть рабочая команда которая прекрасно монтирует через консоль sshfs -o sftp_server=«/usr/bin/sudo -u root /usr/libexec/openssh/sftp-server» -p 3333 user@0.0.0.0:/path/to/dirr /local/mnt

Но никак не пойму как ее засунуть в .mount в частности как туда прописать -o sftp_server=«/usr/bin/sudo -u root и нестантадрный порт подключения -p 3333

fstab

user@hostname:/mnt/media		/mnt/media	fuse.sshfs 	noauto,comment=systemd.automount,user,idmap=user,Port=22,IdentityFile=/etc/hostname_rsa,allow_other		0	0

mnt-media.automount

[Unit]
Description=Automount /mnt/media sshfs

[Automount]
Where=/mnt/media
DirectoryMode=0775

mnt-media.mount

[Unit]
Description=Mount file for /mnt/media sshfs mount

[Mount]
What=user@hostname:/mnt/media
Where=/mnt/media
Type=fuse.sshfs
Options=noauto,user,idmap=user,allow_other,Port=22,IdentityFile=/etc/hostname_rsa

Что-то типа того

Difrex ★★★★
()
Последнее исправление: Difrex (всего исправлений: 1)
Ответ на: комментарий от Difrex

не работает, порт не подставляется. В примере он стандартный -22, вероятно и без его указания все бы работало, но вот как воткнуть нестандартный порт?

adkondr
() автор топика
Ответ на: комментарий от Difrex

нет, делал по инструкции https://ru.alxschwarz.com/sshfs-with-password-in-systemd/ через /etc/fstab это другое монтирование, я делаю через systemd Хотя ошибки видимо говорят что я что-то упустил именно в /etc/fstab Ошибки выходят mount: --pass-fd is no longer supported mount: can't find /mnt/SO in /etc/fstab mnt-SO.mount mount process exited, code=exited status=1 Failed to mount sshfs mount script.

adkondr
() автор топика
Ответ на: комментарий от Deleted

Поставил команду, все равно не запускается, выдает ошибки mnt-SO-backup17.mount mount process exited, code=exited status=1 Unit mnt-SO-backup17.mount entered failed state.

Вот сам юнит

[Install] WantedBy=multi-user.target

[Unit] Description=sshfs mount script Requires=network-online.target network.target After=network-online.service network.target

[Mount] What=backup17@0.0.0.0:/home/backup17 Where=/mnt/SO/backup17 Options=allow_other,uid=0,gid=0,default_permissions,_netdev,nonempty,UserKnownHostsFile=/dev/null,StrictHostKeyChecking=no,ssh_command=sshpass\040-f\040/path/to/passfile\040ssh,ssh_command='ssh -p 5000' Type=fuse.sshfs

adkondr
() автор топика
Ответ на: комментарий от adkondr

Первое: используй /etc/fstab.
https://www.freedesktop.org/software/systemd/man/systemd.mount.html

Mount units may either be configured via unit files, or via /etc/fstab (see fstab(5) for details). Mounts listed in /etc/fstab will be converted into native units dynamically at boot and when the configuration of the system manager is reloaded. In general, configuring mount points through /etc/fstab is the preferred approach. See systemd-fstab-generator(8) for details about the conversion.

Второе: у тебя дважды написано ssh_command, это так не работает.

Ну и всё херня, давай по новой.
В fstab у тебя должна быть строка

REMOTE_USER@REMOTE_HOST:REMOTE_DIR    MOUNT_POINT    fuse.sshfs _netdev,user,idmap=user,transform_symlinks,port=REMOTE_PORT,IdentityFile=PRIVATE_KEY_FILE,UserKnownHostsFile=KNOWN_HOSTS_FILE,allow_other,default_permissions,uid=LOCAL_USER_UID,gid=LOCAL_USER_GID   0 0
Где
REMOTE_USER - пользователь на удалённом хосте, к которому ты подключаешься.
REMOTE_HOST - удалённый хост, к которому ты подключаешься.
REMOTE_DIR - директория на удалённом хосте, которую ты будешь монтировать на локальный.
MOUNT_POINT - куда монтировать на локалхосте.
REMOTE_PORT - порт на удалённом хосте, который слушает ssh. (Кстати, а чем стандартный не устроил?)
PRIVATE_KEY_FILE - твой приватный ключ, который ты скорее всего сгенерировал при помощи ssh-keygen. Лежит, вероятнее всего, в ~/.ssh и имеет имя, в зависимости от алгоритма (если сам не дал ему какое-то особое), id_dsa, id_ecdsa, id_ed25519, id_rsa или id_rsa1.
KNOWN_HOSTS_FILE - твои известные хосты. Вероятнее всего - ~/.ssh/knonw_hosts.
LOCAL_USER_UID - твой uid на локалхосте. id -u $USER что бы узнать.
LOCAL_USER_GID - твой gid на локалхосте. id -g $USER что бы узнать.

Например:
dear_amomynous@some_server0:/home/dear_amomynous    /home/dear_amomynous/remote_home_mounted_locally    fuse.sshfs _netdev,user,idmap=user,transform_symlinks,port=22,IdentityFile=/home/dear_amomynous/.ssh/id_ed25519,UserKnownHostsFile=/home/dear_amomynous/.ssh/known_hosts,allow_other,default_permissions,uid=1000,gid=1000   0 0
И да, у ~/.ssh и всех файлов внутри, кроме приватных ключей, должны быть права доступа 0644, у приватных ключей - 0600.
На удалённом сервере - аналогично. Плюс у REMOTE_USER в authorized_keys должен содержаться твой публичный ключ, который PRIVATE_KEY_FILE, но только ещё с .pub на конце.

Deleted
()

Есть рабочая команда которая прекрасно монтирует через консоль
Но никак не пойму как ее засунуть в .mount

попробуй прописать нужные опции не в командной строке, а в конфиге ssh. Покури archwiki, как это делать.

https://wiki.archlinux.org/index.php/SSHFS#Mounting

https://wiki.archlinux.org/index.php/SFTP_chroot

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.