sshfs с fstab: неправильный uid, gid и ошибка ввода / вывода

Я хочу использовать sshfs с моего компьютера с Linux (Ubuntu 18.04.2 LTS) на моем MacBook. Я мог бы сделать это в командной строке с

sshfs jczhang@10.0.2.2:/Users/jczhang/mysharedfolder /home/jczhang/mysharedfolder

Он работал отлично. Поскольку я хотел автоматически смонтировать общую папку во время загрузки, я поместил ее в /etc/fstab.

.

jczhang@10.0.2.2:/Users/jczhang/mysharedfolder /home/jczhang/mysharedfolder fuse.sshfs delay_connect,_netdev,user,uid=1000,gid=1000,IdentityFile=/home/jczhang/.ssh/id_rsa,allow_other 0 0

Здесь 1000 - это мой идентификатор и идентификатор в Linux. После перезагрузки я обнаружил, что каталог был смонтирован, но я не смог получить к нему доступ.

ls -l
d?????????  ? ?       ?              ?            ? mysharedfolder/

cd mysharedfolder
-bash: cd: mysharedfolder: Input/output error

mount status had
jczhang@10.0.2.2:/Users/jczhang/mysharedfolder on /home/jczhang/mysharedfolder type fuse.sshfs (rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,allow_other,_netdev,user)

Я не знал, почему sshfs продолжал использовать user_id = 0, group_id = 0. Я пробовал разные комбинации uid = 1000, gid = 1000 и idmap = user. Никто не работал. Я размонтировал общую папку и сделал «mount -a». Это все еще не решило проблему.

Я использовал SSHFS по умолчанию версии 2.10. Позже я обновил его до версии 3.5.2. Ничего не изменилось.

1112 Кто-нибудь знает решение? Спасибо.

ОБНОВЛЕНИЕ:

Эта проблема сводила меня с ума. Поскольку эта общая папка предназначена для моего личного использования, а sshfs работает в командной строке, я нахожу обходной путь. В .bashrc я поместил if ! [ -d /home/jczhang/mysharedfolder/flagfile ]; then sshfs jczhang@10.0.2.2:/Users/jczhang/mysharedfolder /home/jczhang/mysharedfolder -o idmap=user,uid=1000,gid=1000 fi flagfile - это файл, который сообщает о том, что папка уже смонтирована. При каждом (первом) входе в Linux папка автоматически монтируется для меня.

Это прекрасно работает!

0
задан 27 June 2019 в 22:21

2 ответа

У меня точная настройка:

Моя ОС от 18.04.2:

] lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic

Моя версия SSHFS:

] sshfs -V
SSHFS version 2.8
FUSE library version: 2.9.7
fusermount version: 2.9.7
using FUSE kernel interface version 7.19

Создание базы:

] sudo mkdir /path/to/mount
] sudo chown $USER: /path/to/mount
] sudo nano /etc/fstab
] ssh REMOTEUSER@HOSTNAME touch /path/to/share/testfile

/ etc / fstab entry: (вы можете удалить запись порта)

REMOTEUSER@HOSTNAME:/path/to/share /path/to/mount fuse.sshfs port=PORT,_netdev,follow_symlinks,identityfile=/home/LOCALUSER/.ssh/RSAKEY,allow_other,uid=1000,gid=1000 0 0

Тестовое крепление:

] sudo mount -a
] mount | grep HOSTNAME
REMOTEUSER@HOSTNAME:/path/to/share on /path/to/mount type fuse.sshfs (rw,relatime,user_id=0,group_id=0,allow_other,_netdev)
] ls -l /path/to/
...
drwxr-xr-x 1 LOCALUSER LOCALGROUP 4096 Jun 28 09:20 mount/
...
] ls -l /path/to/mount/testfile
-rw-rw-r-- 1 samh samh 0 Jun 28 10:45 /path/to/mount/testfile
0
ответ дан 27 June 2019 в 22:21

У меня была такая же проблема. Проблема оказалась в том, что удаленный компьютер не присутствовал в корневом файле known_hosts локальной машины. Простое выполнение:

sudo mount /path/to/mount

заставит sshfs запросить добавление удаленного в корневой файл known_hosts — поэтому, если вы выберете «да» в подсказке, это должно быть сделано.

Обратите внимание на sudo. mount без sudo успешно смонтирует его, но добавит удаленный сервер в файл known_hosts пользователя вместо файла root. Записи fstab монтируются пользователем root, поэтому, если вы не добавили удаленный компьютер в known_hosts root, он не найдет его, и монтирование будет неполным, что приведет к ошибка ввода/вывода.

0
ответ дан 10 December 2020 в 04:43

Другие вопросы по тегам:

Похожие вопросы: