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

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

41
задан 13.04.2020, 08:47

7 ответов

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

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

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

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

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

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

1. Получите IP-адреса вашего Локального & amp; Удаленные машины.

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» в конфигурации fuse

Эта опция понадобится нам при монтировании в 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

или использовать Наутилус, чтобы просмотреть каталог. Отлично.

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 делает Ядро ждет, пока сеть не заработает, пока оно не попытается смонтировать каталог на удаленной машине.
  • Поскольку во время загрузки мы работаем с правами root, нам нужно указать ключевой файл , который хранится в домашнем каталоге localuser.
  • allow_other - пользователи, отличные от того, кто выполняет фактическое монтирование, могут получить доступ к смонтированной файловой системе.
  • idmap = user - только преобразовать UID подключающегося пользователя
  • [1181 ]connect, 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 вы можете перетащить эту папку на панель меток

12. Повторите

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

0
ответ дан 13.04.2020, 08:48

Я полагаю, что это то, под чем перечислены пакеты SAMBA, или это как минимум часть их описания. В качестве альтернативы вы можете попробовать Preferences-> File Sharing, который, я считаю, использует другой механизм. Самба - удобная вещь для установки.

0
ответ дан 13.04.2020, 08:48
  • 1
    Нет, ты был прав. Конечно, на обеих машинах должна быть установлена ​​самба. –  13.04.2020, 08:48
  • 2
    Обе машины должны использовать протокол SMB. Windows делает это одним способом. Машины Linux делают это с помощью Samba. – Rael Gugelmin Cunha 13.04.2020, 08:49
  • 3
    У меня сложилось впечатление (по-видимому, ошибочно), что Samba разрешает совместное использование между Linux и Windows. Я не хочу делиться с Windows, только с другой машиной Linux. – Alok Anand 13.04.2020, 08:49

Какое отношение имеет Windows к этому? Я не пытаюсь поделиться с машиной Windows ...

Вы правы, это может сбивать с толку. Итак, позвольте мне сначала уточнить термины:

Способ, которым Windows обменивается файлами и принтерами, называется SMB . Люди из проекта SAMBA реализовали все протоколы и спецификации Microsoft для Linux. Поэтому Ubuntu поддерживает тот же тип обмена файлами, что и Windows, который называется Samba.

  • Вы можете использовать SAMBA для обмена файлами между компьютерами Linux. На самом деле, вы можете предпочесть его, например, если у вас есть друг с компьютером Windows.

  • В качестве альтернативы, вы можете использовать Linux-способ общего доступа к файлам, который называется NFS (Network File System) - . Этот ответ на предыдущий вопрос объясняет, как это сделать. , (но это скорее технический вопрос)

Итак, когда в диалоговом окне «Параметры общего доступа» вам предлагается установить пакеты, вы фактически не устанавливаете программное обеспечение Microsoft или что-либо подобное. Идите и сделайте это, это совершенно безопасно.

Приложение:

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

0
ответ дан 13.04.2020, 08:49
  • 1
    Спасибо за объяснение. Забавно, что я пытаюсь уйти от Microsoft, и оказывается, что даже Linux использует кусочки своей работы. Тьфу. – Chuck 13.04.2020, 08:49
  • 2
    Ну, люди самбы реализовали протоколы Microsoft намного лучше, чем сами Microsoft. Некоторое утешение там :-) – pguardiario 13.04.2020, 08:50

В настоящее время в Lucid есть небольшая ошибка, которая указана в Launchpad: bug # 536766 . Эта ошибка не побуждает пользователя устанавливать необходимые пакеты, необходимые для завершения настройки общего доступа к файлам. Пока это не решено, вот быстрый обходной путь.

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

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

alt text

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

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

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

0
ответ дан 13.04.2020, 08:50
  • 1
    @ Emmy, пакеты не будут нарушать вашу установку Apache. Я бегу тем и более без проблем. – fangxing 13.04.2020, 08:50
  • 2
    отличная находка! (Между прочим, я отредактировал ответ, этот пакет установит apache2.2-bin как зависимость, в таком случае это выглядит проще) – Community 13.04.2020, 08:50
  • 3
    Эти пакеты вообще связаны с веб-сервером apache? Я уже установил apache как часть стека LAMP и не хочу его ломать. – Jörg W Mittag 13.04.2020, 08:51

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

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

0
ответ дан 13.04.2020, 08:50

Вы можете просто запустить простой HTTP-сервер на машине linux и получить доступ к тому же на другой машине.

Шаги:

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

Вы получаете требуемый файлы в папке для загрузки.

0
ответ дан 13.04.2020, 08:51
  • 1
    Для меня это отличный ответ, хотя для Python3 это python3 -m http.server – Ari 13.04.2020, 08:51
  • 2
    Скачать! = Поделиться. – Don Carr 13.04.2020, 08:51

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

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

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

sudo apt-get install openssh-server

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

sftp://servername.local

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

0
ответ дан 13.04.2020, 08:51
  • 1
    Другие программные способы копирования файлов по SSH включают scp и (еще лучше) rsync. – Toby 1 Kenobi 13.04.2020, 08:51

Теги

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