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

Коли я завантажую ноутбук, у списку пристроїв відображається папка__, але вона не встановлена. Коли я намагаюся отримати доступ до нього через 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

Я спробував додати "enable_other" як варіант у записі fstab і прокоментував відповідний рядок у /etc/fuse.conf, але це нічого не змінило.

Користувач "mynickname" є власником папки / media / a_folder і має права доступу до rwx.

Я переглянув багато тем в Інтернеті про людей з досить подібними питаннями, але поки що нічого не працювало. Зазвичай люди навіть не можуть цього зробити

sshfs my-PC:/a_folder /media/a_folder

не отримуючи помилки, тоді як це працює чудово на моєму ноутбуці.

Будь-яке розуміння та поради будуть дуже вдячні! Дякую.

EDIT: Нещодавно я вирішив це питання, але забув оновити цю публікацію. Отже, ось що є в моєму fstab:

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

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

fstab  sshfs 

Відповіді:


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

Дякую за вашу відповідь. Я вже спробував параметр IdentityFile, але я не вказав параметри uid та gid, тому спробую це!

Технічно вам не потрібно використовувати, sudoякщо все налаштовано правильно для кріплення FUSE. Також параметри uid / gid повинні впливати лише на того, який користувач має права на файли у вашій системі.
earthmeLon

Тому я просто спробував разом з uid, gid, IdentityFile, enable_other, всі ці параметри одночасно, і, на жаль, він все ще не працює. Ще та сама помилка.

Ви б не хотіли розмістити зразок того, як ви це написали? Ви повинні вказувати на ваш приватний ключ, а не на ваш відкритий ключ.
earthmeLon

1
Тож обидва методи не спрацювали. Ще та сама помилка. Для конфігураційного файлу я спробував вказати правильний хост: користувача, ім'я хоста (спробував і IP, і ім’я), ідентифікаційний файл. Але це також не спрацювало. Тому я закінчую зараз те, що я додав команду 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.

І BTW, вам потрібно встановити uid та gid, оскільки, idmap=userздається, працює лише для поточного користувача, який є коренем у цьому випадку.


3

Ця проблема також може виникнути при зміні хост-ключа ssh.

Спробуйте підключитися до сервера через ssh (наприклад ssh username@hostIP). Якщо з’являється така помилка:

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

Виконайте вказівки у повідомленні про помилку, щоб видалити старий ключ та спробуйте підключитися знову через ssh. Якщо помилка більше не з’являється, з'єднання sshfs має працювати.


"спробуйте підключитися до сервера через ssh" Обов'язково зробіть це як root, якщо ви монтуєте каталог як root (що відбувається при автоматичному наборі). Користувача known_hostsфайл може відрізнятися від суперкористувача known_hostsфайлу.
Шельваку

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, і все працює після цього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.