Как открыть общий доступ к папке на другом компьютере с Linux в той же домашней сети?

44

Я пытаюсь открыть общий доступ к папке на одной машине Ubuntu с другой машиной Ubuntu в той же домашней сети. Когда я щелкаю правой кнопкой мыши по папке и выбираю «Параметры общего доступа», она говорит мне, что мне нужно установить службы общего доступа к сети Windows для совместного использования папок. Какое отношение имеет Windows к этому? Я не пытаюсь поделиться с машиной Windows ...

Emmys
источник

Ответы:

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: bug # 536766 . Эта ошибка не побуждает пользователя устанавливать необходимые пакеты, необходимые для завершения настройки общего доступа к файлам. Пока это не решено, вот быстрый обходной путь.

Вам нужно установить libapache2-mod-dnssd и перезапустить. Нажмите на эту ссылку, чтобы установить ее, или найдите libapache2-mod-dnssd в Центре программного обеспечения.

После установки перейдите в « Система» → «Настройки» → «Общий доступ к файлам» и установите флажок «Общий доступ к файлам в сети».

альтернативный текст

Как только это будет сделано, вы сможете просматривать все другие компьютеры в вашей сети, которые разрешают общий доступ к файлам в общей папке. Просто нажмите Places → Network , и вы увидите все доступные компьютеры и их общие папки Public.

Двойной щелчок по значку сервера установит соответствующую общую папку на вашем рабочем столе.

Через текст ссылки

Салих Эмин
источник
Эти пакеты вообще связаны с веб-сервером apache? Я уже установил apache как часть стека LAMP и не хочу его ломать.
EmmyS
1
отличная находка! (Между прочим, я отредактировал ответ, этот пакет установит apache2.2-bin в качестве зависимости, в таком случае это выглядело проще)
Стефано Палаццо
1
@ Emmy, пакеты не будут нарушать вашу установку Apache. Я бегу тем и более без проблем.
RolandiXor
Я нашел эту ссылку полезной в фактическом совместном использовании каталога: itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas
5

Вы можете просто запустить простой HTTTP-сервер на компьютере с 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 перечислены под, или это по крайней мере часть их описания. В качестве альтернативы вы можете попробовать Preferences-> File Sharing, который, я считаю, использует другой механизм. Samba - удобная вещь для установки.

Nerdfest
источник
У меня сложилось впечатление (по-видимому, ошибочно), что Samba разрешает совместное использование между Linux и Windows. Я не хочу делиться с Windows, только с другой машиной Linux.
EmmyS
Нет, ты был прав. Конечно, на обеих машинах должна быть установлена ​​самба.
Стефано Палаццо
Обе машины должны использовать протокол SMB. Windows делает это одним способом. Машины Linux делают это с помощью Samba.
сумасшедший ежик
2

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

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

LtWorf
источник
2

Если вам нужна бесшовная интеграция в Ubuntu, и вы не заинтересованы в совместимости с Windows, SSH - это ваша компания.

См. Как я могу обмениваться файлами между двумя компьютерами Linux по локальной сети?

Вам может понадобиться установить сервер SSH с:

sudo apt-get install openssh-server

Из приложения менеджера файлов на вашем клиенте вы можете попасть на ваш сервер с помощью:

sftp://servername.local

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

nobar
источник
Другие программные способы копирования файлов через SSH включают scpи (даже лучше) rsync.
Нобар
2

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

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

Я буду использовать «Local machine - surfbox» для компьютера, к которому вы подключаетесь, и «Remote machine - devbox» для компьютера, к которому вы подключаетесь.

Замените «remoteuser» ниже на имя пользователя, с которым вы входите на Удаленной машине, и «localuser» на имя пользователя, с которым вы входите на Локальной машине. Для проверки имен пользователей введите echo $USERв терминале на удаленных и локальных компьютерах.

Кроме того, проверьте свой userID или groupID, они оба должны быть 1000.

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

1. Получить IP-адреса ваших локальных и удаленных машин.

hostname -I

Я буду использовать 192.168.1.150 для локальной машины ('surfbox') и 192.168.1.151 для удаленной машины ('devbox')

2. Установите пакеты на локальные и удаленные машины.

sudo apt install sshfs fuse ssh

3. Создайте групповой предохранитель и добавьте к нему localuser

Создать группу: sudo groupadd fuse

Добавьте localuser в группу: sudo usermod -a -G fuse $user

4. Включите "allow_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 / authorized_keys на удаленном компьютере.

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, чтобы это произошло. Вам понадобится ваш ID пользователя локальной машины или 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 заставляет ядро ​​ждать, пока сеть не будет запущена, пока не попытается смонтировать каталог на удаленной машине.
  • Поскольку мы бежим как корень во время загрузки , мы должны указать файл_ключа , который хранится в Локальный_пользователе домашней директории.
  • allow_other - пользователи, отличные от того, кто выполняет фактическое монтирование, могут получить доступ к смонтированной файловой системе.
  • idmap = user - только перевод UID подключающегося пользователя
  • Реконнект, ServersLiveInterval, ServerAliveCountMax - ssh отправляет контрольные проверки активности . Если ServerAliveCountMaxпоследовательные эхо-запросы не выполняются, восстановите соединение.

Пользователь, входящий в систему как Стив на локальных и удаленных машинах, будет иметь:

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. Перезагрузка

Теперь вы должны иметь доступ к каталогу Remote machine / home на локальном компьютере / mnt / devboxhome. В Nautilus вы можете перетащить эту папку на панель Places.

12. Повторите

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

zx81roadkill
источник
Хороший ответ. Я не знал, что можно смонтировать файловые системы sshfs в fstab, спасибо за это.
Органический мрамор
0

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

sudo npm install -g http-server

Перейдите в папку, которой вы хотите поделиться, откройте терминал и выполните эту команду:

http-server -o 

Вы сможете получить доступ к этой папке на всех машинах в той же сети по IP-адресу, указанному в выводе этой команды.

rehman_00001
источник
0

zx81roadkill прав, используйте "sshfs". Самба это дерьмо, NFS это мусор. 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 МБ / с +.

Джимини Идиот
источник