sshfs с помощью fstab: сброс соединения по пиру

10

Я пытаюсь разрешить моему ноутбуку (Ubuntu 13.04) доступ к жесткому диску моего ПК (Lubuntu 13.04) через SSHFS. Я использую ключи RSA для подключения.

Это прекрасно работает, если я наберу это в терминале:

sshfs my-PC:/a_folder /media/a_folder

Но я бы хотел, чтобы он устанавливался автоматически при загрузке моего ноутбука. Итак, я добавил себя в группу предохранителей:

sudo adduser mynickname fuse

И я добавил следующую строку в мой файл fstab:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev 0 0

Когда я загружаю ноутбук, a_folder появляется в списке устройств, но не монтируется. Когда я пытаюсь получить к нему доступ через Nautilus, отображается следующая ошибка:

mount: only root can mount sshfs#mynickname@my-PC:/a_folder on /media/a_folder

Я получаю ту же ошибку, если я пытаюсь

mount /media/a_folder

в терминале.

Если я попробую

sudo mount /media/a_folder

я получил

read: Connection reset by peer

Я попытался добавить «allow_other» в качестве опции в запись fstab и раскомментировал соответствующую строку в /etc/fuse.conf, но это ничего не изменило.

Пользователь «mynickname» является владельцем папки / media / a_folder и имеет права доступа rwx.

Я просматривал множество тем в Интернете о людях с довольно похожими проблемами, но пока ничего не получалось. Обычно люди не могут даже сделать

sshfs my-PC:/a_folder /media/a_folder

без получения ошибки, тогда как на моем ноутбуке это работает нормально.

Любое понимание и советы будут с благодарностью! Спасибо.

РЕДАКТИРОВАТЬ: Я решил эту проблему некоторое время назад, но я забыл обновить этот пост. Так вот, что находится в моем fstab:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse noauto,_netdev,idmap=user,user,default_permissions 0 0

Ключевой вариант для добавления был default_permissions, если я помню. Мне пришлось добавить мой ник в группу, к которой принадлежит / a_folder / на моем ПК.


источник

Ответы:

8

Проблема, с которой вы сталкиваетесь, заключается в том, что ваш обычный пользователь правильно настроил ваш файл идентификации, в то время как пользователь root не знает, какой ключ ssh использовать.

Вы можете исправить это, сообщив fstab, какой файл идентификации / ключ ssh использовать при попытке подключения:

sshfs#user@host:/mnt/whatever/ /mnt/whatever/        fuse    user,_netdev,reconnect,uid=1000,gid=1000,IdentityFile=/home/USER/.ssh/KEYFILE,idmap=user,allow_other  0   2
earthmeLon
источник
Спасибо за Ваш ответ. Я уже пробовал с опцией IdentityFile, но я не указал опции uid и gid, поэтому я попробую это!
Технически, вам не нужно использовать, sudoесли все настроено правильно для монтирования FUSE. Кроме того, настройки uid / gid должны влиять только на то, какой пользователь имеет права на файлы в вашей системе.
earthmeLon
Поэтому я просто попытался использовать uid, gid, IdentityFile, allow_other, все эти опции одновременно, и, к сожалению, он все еще не работает. Все та же ошибка.
Не могли бы вы опубликовать пример того, как вы его написали? Вы должны указывать на свой закрытый ключ, а не на свой открытый ключ.
earthmeLon
1
Так что оба метода не сработали. Все та же ошибка. Для файла конфигурации я попытался указать правильный хост: user, hostname (пробовал и IP и имя), identityfile. Но это не сработало. Итак, что я сейчас делаю, так это добавление команды sshfs my-PC: / a_folder / media / a_folder в автозагрузку приложений. Это не так чисто, как при использовании fstab, но пока работает достаточно хорошо. Спасибо за вашу помощь и ваши предложения! Если вы думаете о чем-то другом, не стесняйтесь поделиться, я буду признателен за это!
4

Чтобы получить реальный отладочный вывод, вам нужно добавить оба sshfs_debugи debugпараметры для монтирования:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev,debug,sshfs_debug 0 0

При этом вы получите много отладочной информации, которая поможет вам:

$ sudo mount -a
SSHFS version 2.5
FUSE library version: 2.9.2
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
executing <ssh> <-x> <-a> <-oClearAllForwardings=yes> <-2> <user@box> <-s> <sftp>
user@box's password: 
Server version: 3
Extension: posix-rename@openssh.com <1>
Extension: statvfs@openssh.com <2>
Extension: fstatvfs@openssh.com <2>
Extension: hardlink@openssh.com <1>
Extension: fsync@openssh.com <1>
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.22
flags=0x0000f7fb
max_readahead=0x00020000
remote_uid = 1001
   INIT: 7.19
   flags=0x00000011
   max_readahead=0x00020000
   max_write=0x00020000
   max_background=0
   congestion_threshold=0
   unique: 1, success, outsize: 40
unique: 2, opcode: STATFS (17), nodeid: 1, insize: 40, pid: 2771
unique: 3, opcode: LOOKUP (1), nodeid: 1, insize: 47, pid: 3371

В моем случае я обнаружил, что мой компьютер был указан только в списке .ssh/config, поэтому он не был разрешен для root.

И кстати, вам нужно установить uid и gid, так как, idmap=userкажется, работает только для текущего пользователя, который в данном случае является root.

Александр Торстлинг
источник
3

Эта проблема также может возникнуть при изменении ключа хоста ssh.

Попробуйте подключиться к серверу через ssh (например ssh username@hostIP). Если появляется следующая ошибка:

 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!    @
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Следуйте инструкциям в сообщении об ошибке, чтобы удалить старый ключ, и повторите попытку подключения через ssh. Если ошибка больше не появляется, соединение sshfs должно работать.

Горка
источник
"попробуйте подключиться к серверу через ssh". Убедитесь, что вы делаете это как root, если вы монтируете каталог как root (именно это происходит при автоматическом монтировании). known_hostsФайл пользователя может отличаться от known_hostsфайла root .
Шелваку
0

Полное раскрытие: выродок старой школы, но совершенно новый бренд в мире linux / open source

Прежде всего, я все еще использую аутентификацию по паролю, потому что я еще не достаточно разбираюсь в ключах RSA. Это приближается к вершине списка, хотя.

Соответствующая информация о настройке: Использование MacBook Pro с установленным VMWare Fusion, на котором у меня установлен сервер Ubuntu 10.04 LTS. Полагаясь на терминал Mac и SSH для почти всего моего взаимодействия с сервером

После неудачной установки Drupal я откатился до предыдущего снимка и внезапно не смог выполнить команду, которую только что использовал ранее: sshfs -o idmap=user -o allow_other user@mac.home:/Users/<username>/Documents ~/mountpoint

Проблема в том, что ключи вышли из синхронизации. Я не знаю, нужно ли мне это делать на моем хосте и на сервере, но я очистил все локальные ключи каждого из них, сначала сделав резервную копию файла known_hosts, а затем отредактировав файл known_hosts, чтобы удалить записи ,
На Mac этот файл находится по адресу: /Users/<username>/.ssh/known_hosts
В Ubuntu этот файл находится по адресу:/home/<username>/.ssh/known_hosts

Итак, подведем итог, все выполнено с моего терминала Mac, после запуска сервера Ubuntu:

cp /Users/<username>/.ssh/known_hosts /Users/<username>/.ssh/known_hosts.old
nano  /Users/<username>/.ssh/known_hosts
  # remove extra entries, save file
ssh <username>@ubuntu_server
cp /home/<username>/.ssh/known_hosts, /home/<username>/.ssh/known_hosts.old
nano /home/<username>/.ssh/known_hosts
  # remove extra entries, save file

После первого SSH в каждой системе SSH предлагает мне разрешить добавление ключей RSA, и все работает после этого.

кавалер
источник