Bir klasörü aynı ev ağındaki başka bir Linux makinesiyle nasıl paylaşabilirim?


43

Bir Ubuntu makinesindeki bir klasörü aynı ev ağındaki başka bir Ubuntu makinesiyle paylaşmaya çalışıyorum. Klasöre sağ tıklayıp Paylaşma Seçenekleri'ni seçtiğimde, klasörleri paylaşmak için Windows ağ paylaşım servislerini kurmam gerektiğini söylüyor. Windows'un bununla ne alakası var? Windows makineyle paylaşmaya çalışmıyorum ...

Yanıtlar:


22

Windows'un bununla ne alakası var? Windows makineyle paylaşmaya çalışmıyorum ...

Haklısın, bu kafa karıştırıcı olabilir. Öyleyse, öncelikle terimleri açıklığa kavuşturmaya çalışayım:

Windows'un dosyaları ve yazıcıları paylaşma biçimine SMB adı verilir . SAMBA projesinden gelen insanlar , Microsoft’un tüm protokollerini ve Linux spesifikasyonlarını uyguladı. Bu nedenle Ubuntu, Samba denilen Windows ile aynı tür dosya paylaşımını destekler.

  • Linux makineler arasında dosya paylaşmak için SAMBA kullanabilirsiniz. Aslında, örneğin Windows bilgisayarlarında bir arkadaşınız olması durumunda tercih edebilirsiniz.

  • Alternatif olarak, NFS (Ağ Dosya Sistemi) olan dosya paylaşımını Linux Yolu'nu kullanabilirsiniz - Önceki bir sorunun cevabı nasıl yapılacağını açıklar. (ama oldukça teknik)

Dolayısıyla, Paylaşma Seçenekleri iletişim kutusu sizden paketleri yüklemenizi istediğinde, aslında herhangi bir Microsoft yazılımı ya da benzeri bir şey yüklemiyorsunuzdur. Devam et ve yap, tamamen güvenli.

Zeyilname:

Salih Emin'in talimatlarını takip etmeden önce sadece paylaşımı etkinleştirmeyi deneyebilirsiniz; işe yaramazsa, basit bir uyarı alırsınız, ardından Salih'in gerekirse izah ettiği adımları uygulayabilirsiniz. Yeni kurulmuş ve güncel bir sistemde denedim ve gerçekten de bunu yapmam gerekiyordu.


1
Açıklama için teşekkürler. Komik, Microsoft'tan uzaklaşmaya çalıştığım ve Linux'un çalışmalarının parçalarını kullandığı ortaya çıktı. Ugh.
EmmyS

4
Samba çalışanları Microsoft'un protokollerini Microsoft'un kendisinden çok daha iyi uyguladılar. Orada bazı teselli :-)
Stefano Palazzo

8

Şu anda, Lucid'de Launchpad'de listelenen küçük bir hata var: Hata # 536766 . Bu hata, kullanıcıdan dosya paylaşım kurulumunu tamamlamak için gereken paketleri kurmasını istemez. Bu çözülene kadar, hızlı bir geçici çözüm.

Sen yüklemeniz gerekir libapache2-mod-dnssd ve yeniden. Yüklemek için bu bağlantıya tıklayın veya Yazılım Merkezinde libapache2-mod-dnssd dosyasını bulun .

Kurduktan sonra, Sistem → Tercihler → Kişisel dosya Paylaşma bölümüne gidin ve 'Genel dosyaları ağda paylaş' kutusunu işaretleyin.

alt metin

Tüm bunlar tamamlandıktan sonra, ağınızdaki Genel klasörde ortak dosya paylaşımına izin veren tüm diğer bilgisayarları görüntüleyebilmelisiniz. Yerler → Ağ üzerine tıklamanız yeterli; orada mevcut tüm bilgisayarları ve ortak klasörlerini görmelisiniz.

Sunucu simgesine çift tıklamak, masaüstünüzdeki ilgili ortak klasörü bağlar.

Via bağlantı metni


Bu paketler apache web sunucusuyla ilişkili mi? Zaten bir LAMP yığınının parçası olarak kurulmuş bir apache kullandım ve kırmak istemiyorum.
EmmyS

1
harika bul! (Bu arada cevabı değiştirdim, bu paket apache2.2-bin'i bir bağımlılık olarak kuracak, bu şekilde daha kolay görünüyordu)
Stefano Palazzo

1
@EmmyS, paketler apache kurulumunuzu bozmaz. Bunları ve daha fazlasını sorunsuzca çalıştırıyorum.
RolandiXor

Bu bağlantıyı aslında bir dizini paylaşmada yararlı buldum: itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas

5

Linux makinesinde bir basitHTTP sunucusu çalıştırabilir ve diğerine aynı makineye erişebilirsiniz.

Adımlar:

  1. önce terminali paylaşılacak klasörden başlatın.
  2. terminalde koş - python -m SimpleHTTPServer
  3. ipinizi kullanarak kontrol edin ifconfig.
  4. diğer makinenin tarayıcısına ip adresini girin: 8000 (örneğin: ipiniz 127.3.4.123 ise tarayıcıda 127.3.4.123:8000 yazarsınız)

Gerekli dosyaları indirmek için klasörde olsun.


4
İndir! = Paylaş.
EmmyS

Python3 için olsa Benim için bu büyük bir cevap, varpython3 -m http.server
VanDavv

2

SAMBA paketlerinin altında listelendiğine ya da açıklamalarının en azının altında olduğuna inanıyorum. Alternatif olarak, farklı bir mekanizma kullandığına inandığım Tercihler-> Dosya Paylaşma'yı deneyebilirsiniz. Samba yüklü olması için kullanışlı bir şey.


Samba'nın Linux ve Windows arasında paylaşmaya izin verdiği izlenimi altındaydım (yanlış, görünüşe göre). Windows ile paylaşmak istemiyorum, sadece başka bir Linux makinesiyle.
EmmyS

Hayır haklıydın. Her iki makinenin de elbette samba kurması gerekiyor.
Stefano Palazzo

Her iki makinenin de SMB protokolünü kullanması gerekir. Windows bu şekilde yapar. Linux makineleri samba ile yapıyor.
demirli kirpi

2

"Qweborf" uygulamasını yükleyebilirsiniz. Dizini HTTP üzerinden paylaşacak ve diğer ana bilgisayarlar bir tarayıcı ile erişebilecekler.

Ayrıca webdav'ı etkinleştirebilir ve dizinin bir dosya sistemini okuma / yazma olarak monte edilmesini sağlayabilir (davfs2, KDE, Gnome2, OsX ile test edilmiştir).


2

Ubuntu ile sorunsuz entegrasyon istiyorsanız ve Windows uyumluluğu ile ilgilenmiyorsanız, SSH sizin yabanmersininizdir.

Bkz. İki Linux makinesi arasında dosyaları LAN üzerinden nasıl paylaşabilirim?

SSH sunucusunu aşağıdakilerle yüklemeniz gerekebilir:

sudo apt-get install openssh-server

İstemcinizdeki dosya yöneticisi uygulamasından, sunucunuza şunlarla erişebilirsiniz:

sftp://servername.local

Bir terminalden veya programlı olarak dosyalara erişmek sshfsiçin, istemcinin dosya sisteminde bir bağlantı noktası oluşturmak için kullanın .


Dosyaları SSH üzerinden kopyalamanın diğer programatik yolları arasında scpve (daha da iyi) bulunur rsync.
15'te

2

Yalnızca Linux ağları için SSHFS'nin yerel, kararlı ve çok hızlı olduğunu düşünüyorum. SSH üzerinden iki Xubuntu makinem (18.04) paylaşım / ev klasörüm var.

İşte sshfs'i nasıl ayarlayacağınız ve bir şifre sağlamak zorunda kalmadan fstab'ı kullanarak yeniden başlattıktan sonra otomatik olarak yeniden bağlanmaya başlamanız . Uzaktan askıya alma / sürdürme işleminden sonra yeniden nasıl bağlanacağı için serverfault kullanıcısına kubanczyk'e teşekkür ederiz .

Bağlandığınız bilgisayar için "Yerel makine - sörf kutusu" ve bağlandığınız bilgisayar için "Uzak makine - aygıt kutusu" kullanacağım.

Uzaktaki makineye giriş yaptığınız kullanıcı adıyla aşağıdaki "uzak kullanıcı" yı ve Yerel makinede giriş yaptığınız kullanıcı adı olan "yerel kullanıcı" yı değiştirin. Kullanıcı adlarını doğrulamak echo $USERiçin uzak ve yerel makinelerde terminal yazın .

Ayrıca, kullanıcı kimliğinizi ve grup kimliğinizi kontrol edin, her ikisi de 1000 olmalıdır.

Grup id -g localuser kimliği: Kullanıcı kimliği:id -u localuser

1. Yerel ve Uzak Makinelerinizin IP adreslerini alın.

hostname -I

Yerel Makine ('surfbox') için 192.168.1.150 ve Uzak Makine ('devbox') için 192.168.1.151 kullanacağım

2. Yerel ve Uzak Makinelere paketleri kurun

sudo apt install sshfs fuse ssh

3. Bir grup sigortası oluşturun ve yerel kullanıcı ekleyin

Grup oluştur: sudo groupadd fuse

Gruba yerel kullanıcı ekle: sudo usermod -a -G fuse $user

4. Sigorta konfigürasyonunda "allow_other" i etkinleştirin

Fstab'a monte ederken bu seçeneğe ihtiyacımız olacak

Düzenleme /etc/fuse.confkomut satırı editörü ile. Hashtag'i önce çıkarın user_allow_otherve saklayın.

5. Yerel Makinede SSH anahtarları oluşturun

İstendiğinde bir şifre girmeyin . Boş bırakmak için sadece Enter tuşuna basın.

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

Anahtarlar Yerel makine giriş dizini /.ssh klasöründe saklanır

6. Yerel makine genel SSH anahtarınızı Uzak makineye aktarın

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

Uzak makinede Uzak kullanıcı için parola girmeniz istenir. Yerel makine ortak anahtarı şimdi Uzak makinedeki ~ / .ssh / yetkili_keys dosyasına eklenir.

7. Uzak makine / ana klasörü bağlayacağınız Yerel makine / mnt klasöründe bir dizin oluşturun.

Uzak makineniz için anlamlı olan herhangi bir adı seçin.

sudo mkdir /mnt/devboxhome

8. Uzak makineyi / ana dizini terminalden ekleyin

Sshfs için sözdizimi

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

kullanırız

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

örnek: "steve" olduğunu farz etmek, hem Yerel hem de Uzak makinelerde kullanıcı adıdır.

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

Genel RSA anahtarını Uzak makineye aktardığınızdan, uzak kullanıcı şifresi girmeniz istenmemelidir.

Makinenin güvenilir olmadığı ve eklenmesi gerekip gerekmediği konusunda uyarıda bulunulur. Uzak makineyi güvenilir olarak ekleyin.

9. Doğrulayın: Uzak Makine / Ana dizine göz atın

Yerel makinedeki terminalde artık / mnt / devboxhome altındaki Uzak makine / ana dizini listeleyebilirsiniz.

cd /mnt/devboxhome ls

veya dizine göz atmak için Nautilus kullanın. Harika.

10. Yeniden başlattıktan sonra yeniden bağlanmayı etkinleştir

Bunun gerçekleşmesi için / etc / fstab içine bir girdi ekleyeceğiz. Yerel makine kullanıcısı ve grup bilgisine ihtiyacınız olacak - bunu kaçırdıysanız intro'ya bakın. Komut satırı düzenleyicinizle / etc / fstab dosyasını düzenleyin ve bu iki satırı / etc / fstab komutunun sonuna ekleyin

# 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 , çekirdeği, Uzak makineye dizini bağlamaya çalışıncaya kadar ağ kuruluncaya kadar beklemesini sağlar.
  • Önyükleme sırasında root olarak çalıştığımız için localuser home dizininde saklanan keyfile'yi belirtmeliyiz .
  • allow_other - asıl montajı yapan kullanıcılar dışındaki kullanıcılar bağlı dosya sistemine erişebilir.
  • idmap = kullanıcı - yalnızca bağlanan kullanıcının UID'sini çevir
  • yeniden bağlan, ServersLiveInterval, ServerAliveCountMax - ssh canlı tutma pingleri gönderir. Eğer ServerAliveCountMaxardışık ping başarısız, yeniden bağlayın.

Yerel ve Uzak makinelerde steve olarak giriş yapan bir kullanıcı:

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

ÖNEMLİ : uzak dizinden sonra bir eğik çizgi: steve@192.168.1.151: / home / steve /

kaydet / etc / fstab ve ....

11. Yeniden başlat

Şimdi Yerel makine / mnt / devboxhome dizinindeki Uzak makine / ana klasöre erişebilmeniz gerekir. Nautilus'ta bu klasörü Yerler çubuğuna sürükleyebilirsiniz

12. tekrarla

Yerel makinenin / home dizininin paylaşılması için Uzaktaki makinede de aynı adımları uygulayın.


Güzel cevap Birinin sshfs dosya sistemlerini fstab içine bağlayabileceğinin farkında değildim, bunun için teşekkürler.
Organik Mermer

0

Dosyaları paylaşma yöntemim:

sudo npm install -g http-server

Paylaşmak istediğiniz klasöre gidin, terminali açın ve şu komutu çalıştırın:

http-server -o 

Aynı klasördeki tüm makinelerde bu klasöre, bu komutun çıktısı tarafından belirtilen IP adresinde erişebileceksiniz.


0

zx81roadkill haklı, "sshfs" kullan. Samba saçmalık, NFS çöp. Sshfs, buradaki California'daki bilgisayarımdan, Arjantin'deki bir bilgisayara tamamen kullanılabilir. Tamamen güvenli, her şey kadar hızlı. (Gibabit hattım var).

Sshfs, Samba ve NFS ile karşılaştırıldığında nispeten yenidir, ancak ikisinden de üstündür. İşte çalışan bir örnek (yüklü tüm paketleri varsayalım)

# 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

Şifreyi girdikten sonra, / tmp / my_mount, "makine" üzerindeki "kullanıcı adı" nın tüm dosyalarını içerecektir. Samba veya NFS ile uğraşmaya zahmet etme. Onlar sadece yapılandırmak veya ayarlamak için popodaki anlamsız bir acı.

Çıkarmak için:

fusermount -u /tmp/my_mount

ve eğer bu başarısız olursa (ne sebeple olursa olsun):

umount -f /tmp/my_mount

Bağlantı noktasından gönderilen tüm veriler şifrelenir. Bu neden standart değil, tamamen kabul görmüş bir yöntemdir, uzaktaki bir makineye montaj yapmam benim için bir gizemdir. Basitlik açısından diğer tüm yöntemlerden çok daha üstün.

Ham hıza ihtiyacınız varsa, belki de şişirilmiş hurda Samba ya da NFS yapar. Bilmiyorum, 100 MB / sn + benim için yeterince iyi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.