Як я можу поділитись папкою з іншою машиною Linux у тій же домашній мережі?


43

Я намагаюся поділитися папкою на одній машині Ubuntu з іншою машиною Ubuntu в тій же домашній мережі. Коли я клацну правою кнопкою миші на папці і оберіть "Параметри спільного доступу", це говорить про те, що мені потрібно встановити послуги спільного доступу до мережі Windows, щоб ділитися папками. Що з цим стосується Windows? Я не намагаюся поділитися з машиною Windows ...

Відповіді:


22

Що з цим стосується Windows? Я не намагаюся поділитися з машиною Windows ...

Ви маєте рацію, це може заплутати. Тож дозвольте спробувати уточнити насамперед умови:

Те, як Windows ділиться файлами та принтерами, називається SMB . Люди з проекту SAMBA впровадили всі протоколи та технічні характеристики Microsoft для Linux. Отже, Ubuntu підтримує той самий тип обміну файлами, що і Windows, який називається Samba.

  • Ви можете використовувати SAMBA для обміну файлами між машинами Linux. Насправді, ви можете віддати перевагу, якщо у вас, наприклад, є друг з їх комп'ютером Windows.

  • Можна також скористатися способом спільного використання файлів Linux , який є NFS (мережева файлова система). Ця відповідь на попереднє запитання пояснює, як це зробити. (але це досить технічно)

Тож, коли діалог "Параметри обміну" попросить вас встановити пакети, ви фактично не встановлюєте програмне забезпечення Microsoft чи щось подібне. Іди вперед і роби це, це абсолютно безпечно.

Додаток:

Ви можете спробувати просто включити спільний доступ, перш ніж виконувати вказівки Саліха Еміна; якщо це не працює, ви отримаєте просте попередження, після чого можете виконати кроки, описані Саліхом. Я спробував це на щойно встановленій та оновленій системі, і мені справді потрібно було це зробити.


1
Дякую за пояснення. Смішно, що я намагаюся піти від Microsoft, і виявляється, що навіть Linux використовує частину своєї роботи. Тьфу.
EmmyS

4
Ну а люди самби реалізували протоколи Microsoft набагато краще, ніж самі Microsoft. Якась розрада там :-)
Стефано Палаццо

8

В даний час в Lucid є невеликий помилка, який вказаний у Launchpad: помилка # 536766 . Ця помилка не спонукає користувача встановити необхідні пакети, необхідні для завершення налаштування спільного використання файлів. Поки це не вирішено, ось короткий спосіб вирішення.

Потрібно встановити libapache2-mod-dnssd та перезапустити. Натисніть це посилання, щоб встановити його, або знайдіть libapache2-mod-dnssd в Центрі програмного забезпечення.

Після встановлення перейдіть до системи → Налаштування → Обмін особистими файлами та встановіть прапорець "Надіслати загальнодоступні файли в мережі".

alt текст

Після того, як це все буде зроблено, ви зможете переглядати всі інші комп’ютери у вашій мережі, які дозволили спільно використовувати загальнодоступні файли у загальнодоступній папці. Просто натисніть Місця → Мережа , і там ви побачите всі доступні комп’ютери та їх спільні загальнодоступні папки.

Подвійне клацання піктограми сервера зможе встановити відповідну загальну папку на робочому столі.

Через текст посилання


Чи пов'язані ці пакети з веб-сервером apache? У мене вже встановлено apache як частину стека LAMP, і я не хочу його ламати.
EmmyS

1
чудова знахідка! (Я доредагував відповідь, до речі, цей пакет встановить apache2.2-bin як залежність. Це здавалося простіше)
Стефано Палаццо

1
@EmmyS, пакети не порушать вашу установку apache. Я запускаю те і більше без проблем.
RolandiXor

Я вважаю це посилання корисним для фактичного спільного використання каталогу: itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas

5

Ви можете просто запустити простий серверHTHTTP на машині Linux та отримати доступ до того ж на іншій машині.

Кроки:

  1. спочатку запустіть термінал із папки, якою потрібно поділитися.
  2. запуск у терміналі - python -m SimpleHTTPServer
  3. перевірити свій ip за допомогою ifconfig.
  4. введіть у браузер іншої машини ip адресу: 8000 (наприклад: якщо ваш ip - 127.3.4.123, тоді в браузері ви введете 127.3.4.123:8000)

Ви отримуєте необхідні файли в папці для завантаження.


4
Завантажити! = Поділитися.
EmmyS

Для мене це чудова відповідь, хоча для Python3 цеpython3 -m http.server
VanDavv

2

Я вважаю, що саме так перелічено пакети SAMBA, або це, принаймні, частина їх опису. Як альтернатива, ви можете спробувати Налаштування-> Обмін файлами, які, на мою думку, використовують інший механізм. Самба - це зручна річ, яку можна встановити.


У мене було враження (помилково, мабуть), що Samba дозволив ділитися між Linux та Windows. Я не хочу ділитися з Windows, лише з іншою машиною Linux.
EmmyS

Ні, ви мали рацію. На обох машинах звичайно має бути встановлена ​​самба.
Стефано Палацо

Обидві машини повинні використовувати протокол SMB. Windows робить це одним способом. Машини Linux роблять це з samba.
дементований їжак

2

Ви можете встановити "qweborf". Він поділиться каталогом через HTTP, а інші хости зможуть отримати доступ через браузер.

Він також може ввімкнути webdav та дозволити монтувати каталог під час читання / запису файлової системи (протестовано з davfs2, KDE, Gnome2, OsX).


2

Якщо ви хочете безперебійної інтеграції в Ubuntu, і вас не цікавить сумісність з Windows, SSH - це ваша луна.

Див. Як я можу ділитися файлами між двома машинами Linux через локальну мережу?

Вам може знадобитися встановити SSH-сервер за допомогою:

sudo apt-get install openssh-server

Через додаток файлового менеджера свого клієнта ви можете перейти на ваш сервер за допомогою:

sftp://servername.local

Для доступу до файлів з терміналу або програмно використовуйте sshfsдля створення точки монтажу у файловій системі клієнта.


Інші програмні способи копіювання файлів через SSH включають scpта (ще краще) rsync.
nobar

2

Для мереж, що працюють лише в Linux, я вважаю, що SSHFS є рідним, стабільним та надзвичайно швидким. У мене є дві машини Xubuntu (18.04) для спільного використання / домашніх папок через SSH.

Ось, як налаштувати цей sshfs та автоматично повторно підключитися після перезавантаження, використовуючи fstab, не вказуючи пароль. Велике спасибі користувачеві kubanczyk сервера за замовчуванням за за те, як знову підключитися після віддаленого призупинення / відновлення.

Я буду використовувати "Локальна машина - серфінг" для комп'ютера, з яким ви підключаєтесь, та "Віддалена машина - devbox" для комп'ютера, до якого ви підключаєтесь.

Замініть "remoteuser" нижче на ім'я користувача, з яким ви увійдете на віддаленій машині, а "localuser" на ім'я користувача, з яким ви увійдете на локальній машині. Для перевірки імен користувачів введіть echo $USERтермінал на віддалених та локальних машинах.

Також перевірте свій ідентифікатор userID та groupID, вони мають бути 1000.

GroupID: id -g localuser UserID:id -u localuser

1. Отримайте IP-адреси локальних та віддалених машин.

hostname -I

Я буду використовувати 192.168.1.150 для локальної машини ('серфінкс') і 192.168.1.151 для віддаленої машини ('devbox')

2. Встановіть пакети на локальні та віддалені машини

sudo apt install sshfs fuse ssh

3. Створіть груповий запобіжник та додайте до нього локальний користувач

Створити групу: sudo groupadd fuse

Додати локальногокористувача до групи: sudo usermod -a -G fuse $user

4. Увімкніть "enable_other" у конфігурації запобіжників

Цей варіант нам знадобиться при монтажі у fstab

Редагуйте /etc/fuse.confза допомогою редактора командного рядка. Видаліть хештег раніше user_allow_otherі збережіть.

5. Створіть SSH-ключі на локальній машині

Не вводьте пароль при появі запиту . Просто натисніть Enter, щоб залишити порожнім.

ssh-keygen -t rsa -C youremail@example.com

Клавіші зберігаються в домашній довідці локальної машини /.ssh

6. Перенесіть свій відкритий ключ SSH для локальної машини на віддалену машину

ssh-copy-id -i ~/.ssh/id_rsa.pub remoteuser@192.168.1.151

Вам буде запропоновано пароль для віддаленого користувача на віддаленій машині. Відкритий ключ локальної машини тепер додається до файлу ~ / .ssh / санкціонованих_кіїв на віддаленій машині.

7. Створіть каталог у папці Local machine / mnt, куди ви змонтуєте папку Remote machine / home.

Виберіть будь-яке ім’я, яке має сенс для вашого віддаленого апарату.

sudo mkdir /mnt/devboxhome

8. Встановіть віддалений апарат / домашній каталог з терміналу

Синтаксис для sshfs є

sshfs [user@]host:[directory] mountpoint [options]

ми використовуємо

sudo sshfs [remoteuser]@192.168.1.151:/home/[remoteuser] /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/[localuser]/.ssh/id_rsa

Приклад: припускаючи, що "steve" - ​​це ім'я користувача на локальних і віддалених машинах

sudo sshfs steve@192.168.1.151:/home/steve /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/steve/.ssh/id_rsa

Оскільки ви перенесли загальнодоступний ключ RSA на віддалену машину, вам не потрібно запитувати пароль віддаленого користувача.

Ви отримаєте попередження про те, що машині не довіряють та вимагають, якщо її потрібно додати. Додайте віддалену машину як надійну.

9. Перевірте: Огляд віддаленої машини / домашнього каталогу

У терміналі на локальній машині тепер ви можете перелічити каталог віддалених машин / дому під / mnt / devboxhome

cd /mnt/devboxhome ls

або скористайтеся Nautilus для перегляду каталогу. Чудово.

10. Увімкнути повторне підключення після перезавантаження

Ми додамо запис у / etc / fstab, щоб це сталося. Вам знадобиться ваш локальний користувальницький користувач och groupid - див. Вступ, якщо ви пропустили це. Відредагуйте / etc / fstab за допомогою редактора командного рядка та додайте ці два рядки в кінці / etc / fstab

# Mount devbox at boot remoteuser@192.168.1.151:/home/[remoteuser]/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/[localuser]/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0

  • delay_connect змушує ядро ​​чекати, поки мережа не працює, поки вона не спробує встановити каталог на віддаленій машині.
  • Оскільки ми працюємо як root під час завантаження, ми мусимо вказати файл ключів, який зберігається в домашньому каталозі локального користувача
  • enable_other - користувачі, відмінні від того, хто робить власне монтаж, можуть отримати доступ до змонтованої файлової системи.
  • idmap = користувач - перекладати лише UID користувача, що підключається
  • підключіться, ServersLiveInterval, ServerAliveCountMax - ssh надсилає невідповідні пінгви . Якщо ServerAliveCountMaxпослідовні пінг-файли не вдається, підключіть його знову.

Користувач, який увійшов як Steve на локальних та віддалених машинах, мав би:

steve@192.168.1.151:/home/steve/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/steve/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0

ВАЖЛИВО : коса риса після віддаленого каталогу: steve@192.168.1.151: / home / steve /

зберегти / etc / fstab і ....

11. Перезавантажте

Тепер ви зможете отримати доступ до віддаленої машини / домашнього каталогу в локальній машині / mnt / devboxhome. У Nautilus ви можете перетягнути цю папку на панель місць

12. Повторіть

Знову пройдіть ті самі кроки на віддаленій машині, щоб зробити спільний / домашній каталог локальної машини загальним.


Гарна відповідь. Мені невідомо, що можна було монтувати файлові системи sshfs у fstab, дякую за це.
Органічний мармур

0

Мій спосіб обміну файлами:

sudo npm install -g http-server

Перейдіть до папки, з якою ви хочете поділитися, відкрийте термінал і запустіть цю команду:

http-server -o 

Ви зможете отримати доступ до цієї папки на всіх машинах в одній мережі за IP-адресою, згаданою в результаті виведення цієї команди.


0

zx81roadkill вірно, використовуйте "sshfs". Самба - лайно, НФС - сміття. Sshfs цілком можна використовувати з мого комп'ютера в Каліфорнії, до комп'ютера в Аргентині. Це повністю безпечно, так само швидко, як і все інше (у мене є гібабітна лінія).

Sshfs є порівняно новим у порівнянні з Samba та NFS, але набагато перевершує будь-який. Ось приклад його запуску (якщо ви встановили всі пакунки)

# mount "username"'s home directory on "machine"
  mkdir -p /tmp/my_mount ; sshfs username@machine: /tmp/my_mount
# mount the root directory on "machine" (note: if "username" on "machine"
# can't write to the file, neither will you.  You have "username"'s privs
  mkdir -p /tmp/my_mount ; sshfs username@machine:/ /tmp/my_mount
# mount the directory "Videos" on "username"'s account on "machine"
  mkdir -p /tmp/my_mount ; sshfs username@machine:Videos /tmp/my_mount

Після введення пароля / tmp / my_mount буде містити всі файли "username" на "machine". Не поспішайте повозитися з Samba чи NFS. Вони просто безглузді болі в області прикладу або для налаштування, або для налаштування.

Демонтувати:

fusermount -u /tmp/my_mount

і якщо це не вдається (з будь-якої причини):

umount -f /tmp/my_mount

Всі дані, що надсилаються через точку монтажу, шифруються. Чому це не стандартний, цілком прийнятий спосіб робити кріплення на віддаленій машині, для мене загадка. Це просто перевершує будь-який інший метод з точки зору простоти.

Якщо вам потрібна сира швидкість, можливо, це зробить роздутий шматок мотлоху Samba, або NFS. Я не знаю, 100 Мб / с + мені досить добре.

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