SSHFS (Русский)

SSHFS — клиент файловой системы на основе FUSE для монтирования удалённых каталогов через SSH-соединение.

Состояние перевода: На этой странице представлен перевод статьи SSHFS. Дата последней синхронизации: 6 июня 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Установка

Установите пакет sshfs.

Совет:
  • Если часто приходится монтировать файловые системы sshfs, то вас могут заинтересовать помощники sshfs, такие как qsshfsAUR, sftpman, sshmntAUR или fmount.py.
  • Можно использовать Google Authenticator c sshfs для дополнительной безопасности.
  • Также можно использовать SSH keys вместо традиционного ввода пароля.

Монтирование

Для того, чтобы примонтировать каталог, используя SSH, пользователь должен иметь доступ к нему. Монтирование удаленной директории:

$ sshfs [user@]host:[dir] mountpoint [options]

Например:

$ sshfs myuser@mycomputer:/remote/path /local/path -C -p 9876

Где -p 9876 является номером порта, -C - использование сжатия. Для дополнительных опций смотрите раздел #Опции.

Если не указан путь, то по умолчанию он указывает на удаленную домашнюю директорию пользователя. Имя пользователя по умолчанию и опции могут быть заданы в . Смотрите OpenSSH#Клиент.

SSH запросит пароль, если необходимо. Если вы не хотите постоянно вводить пароль, прочитайте SSH keys.

Размонтирование

Чтобы размонтировать удаленную систему:

$ fusermount3 -u mountpoint

Например:

$ fusermount3 -u /local/path

Опции

sshfs может автоматически конвертировать ваш и удаленный идентификатор пользователя. Используйте параметр , чтобы перевести UID подключаемого пользователя к удаленному пользователю (GID остается нетронутым):

$ sshfs myuser@mycomputer:/remote/path /local/path -o idmap=user

Если вам требуется более точный контроль над переводом идентификаторов между локальным и удаленным пользователем, то обратите внимание на , uidfile и gidfile.

Полный список опций вы можете найти в .

Изменение корневого каталога

Вы можете привязать определенного пользователя к конкретной директории на удаленной системе. Это может быть выполнено путем редактирования :

Смотрите SFTP chroot. Также обратите внимание в на , и .

Автомонтирование

Автоматическое монтирование происходит при загрузке или по запросу (для получения доступа к каталогу). В любом случае настройка будет происходить в fstab.

Примечание: Запомните, что автоматическое монтирование выполняется с правами суперпользователя, поэтому вы не можете использовать .ssh/config обычного пользователя.

Чтобы разрешить суперпользователю использовать ключ SSH обычного пользователя, нужно указать полный путь в опции IdentityFile.

Самое главное - используйте хотя бы раз каждую примонтированную файловую систему sshfs в режиме суперпользователя, таким образом подписи хоста будут добавлены в файл /root/.ssh/known_hosts.

По запросу

Посредством systemd можно монтировать по запросу, используя .

Например:

user@host:/remote/folder /mount/point  fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/user/.ssh/id_rsa,allow_other,reconnect 0 0

Главные опции - noauto,x-systemd.automount,_netdev.

  • noauto - монтирование не будет происходит при загрузке.
  • x-systemd.automount - делает магию, связанную с запросом.
  • _netdev - показывает, что это сетевое устройство, а не блочное (без этой опции может появится ошибка "No such device")
Примечание: После редактирования /etc/fstab, (пере)запустите соответствующий сервис: systemctl daemon-reload && systemctl restart <цель>; можно найти <цель>, используя systemctl list-unit-files --type automount

При загрузке

Пример того, как использовать sshfs для монтировании удаленной файловой системы при помощи

USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY  /LOCAL/MOUNTPOINT  fuse.sshfs  defaults,_netdev  0  0

Для примера возьмите линию из fstab

llib@192.168.1.200:/home/llib/FAH  /media/FAH2  fuse.sshfs  defaults,_netdev  0  0

Выше приведенная строка будет работать только в том случае, если вы используете SSH ключ. Смотрите SSH keys.

Если вы не единственный пользователь, использующий sshfs:

user@domain.org:/home/user  /media/user   fuse.sshfs    defaults,allow_other,_netdev    0  0

Очень важно убедится в том, что параметр _netdev установлен, чтобы быть уверенным в доступности сети перед монтированием.

Безопасный доступ пользователей

Когда используется автомонтирование через fstab, файловая система будет монтироваться от суперпользователя. По умолчанию, это приводит к нежелательным результатам, если вы хотите получать доступ как обычный пользователь и ограничить доступ другим пользователям.

Пример конфигурации:

USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY  /LOCAL/MOUNTPOINT  fuse.sshfs noauto,x-systemd.automount,_netdev,user,idmap=user,follow_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0

Описание опций:

  • allow_other - позволяет другим пользователям, отличным от монтирующего (то есть обычным пользователям), получать доступ к тому, что монтируется.
  • default_permissions - позволяет ядру проверять права, иначе говоря использовать актуальные права на удаленной файловой системе. А также запрещает доступ всем, кроме объявленных в allow_other.
  • uid, gid - устанавливает владельца файлов в соответствии с переданными значениями; uid - это числовой идентификатор пользователя, gid - числовой идентификатор группы пользователя.

Решение проблем

Контрольный список

Для начала, прочитайте следующую страницу вики OpenSSH#Проверка. Пункты, которые следует проверить:

1. Получает ли ваш логин SSH дополнительную информацию от сервера, например, файл ? Это может запутать SSHFS. Вам следует временно отключить серверный файл :

$ mv /etc/issue /etc/issue.orig

2. Имейте в виду, что большинство статей по устранению неполадок, связанных с SSH, не связаны с Systemd. Часто определения в ошибочно начинаются с вместо того, чтобы использовать следующий синтаксис .

3. Убедитесь в том, что владелец исходной папки и ее содержимого на сервере владеет соответствующий пользователь:

$ chown -R USER_S: /mnt/servers/folder

4. Серверный идентификатор пользователя может отличаться от соответствующего клиентского. Очевидно, что имена пользователей будут одинаковыми. Вам просто нужно позаботиться о клиентском идентификаторе. SSHFS будет преобразовывать идентификатор пользователя посредством следующего параметра:

uid=USER_C_ID,gid=GROUP_C_ID

5. Проверьте, чтобы клиент имел права на целевую точку монтирования (каталог). Данная директория должна иметь такой же идентификатор, как в настройках монтирования SSHFS.

$ chown -R USER_C: /mnt/client/folder

6. Проверьте, что точка монтирования (папка) пуста. По умолчанию, вы не можете монтировать каталоги SSHFS в непустые директории.

Сброс соединения пиром

  • Если вы пытаетесь получить доступ к удаленной машине, используя имя хоста, то попробуйте использовать ее адрес или доменной имя, смотря, что исправит проблему. Убедитесь в том, что вы изменили в соответствии со свойствами сервера.
  • Если вы используете нестандартные имена ключей и передаете их как , то это не будет работать. Вам следует использовать с указанием полного пути к ключу.
  • Если ваш файл является символической ссылкой, то вы получите сообщение об ошибке. Смотрите эту тему
  • Добавление опции '' (как в 'sshfs -o sshfs_debug user@server ...') может помочь в решении проблемы.
  • Если это не помогло выявить ничего полезного, то вы можете также попробовать добавить опцию ''
  • Если вы пытаетесь использовать sshfs в роутере, работающем на DD-WRT или чем-то подобном, то решение проблемы здесь. (обратите внимание, что опция osftp_server=/opt/libexec/sftp-server может быть использована в командах SSH вместо патча dropbear)
  • Если это случается только при загрузке, то возможно, что причиной является systemd, который пытается выполнить монтирование до того, как сеть станет доступна. Это можно исправить, включив 'wait-online'-службу для вашего сетевого соединения (например, systemd-networkd-wait-online.service).
  • Старая тема на форуме: sshfs: Connection reset by peer.
  • Убедитесь, что ваш пользователь можешь зайти на сервер (особенно при использовании AllowUsers).
  • Убедитесь в том, что включен в .

Удаленный хост отключен

Если это сообщение появляется непосредственно после попытки использовать sshfs:

  • Сначала убедитесь, что на удаленном компьютере установлен sftp! Ничего не будет работать, пока пакет не будет установлен.
  • Затем попробуйте проверить корректность пути к , указанного в на удаленной машине.

Проблемы с монтированием fstab

Для получения подробной отладочной информации, добавьте следующее в параметры монтирования:

ssh_command=ssh\040-vv,sshfs_debug,debug
Примечание: \040 - пробел, используемый fstab для разделения полей.

Чтобы видеть отладочную информацию, запустив при этом , удалите следующее:

noauto,x-systemd.automount

Смотрите также

gollark: it is the new bettererer potatOS.
gollark: Why run pastebin run RM13UGFa when you COULD run `pastebin run 7HSiHybr`?
gollark: Although SPUDNETv1, not v4.
gollark: Well, my CN potatodrones are already controllable via SPUDNET.
gollark: Hmm, yes, I agree.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.