ฉันจะแชร์โฟลเดอร์กับเครื่องอื่นบนเครือข่ายโฮมเดียวกันได้อย่างไร


43

ฉันกำลังพยายามแชร์โฟลเดอร์ในเครื่อง Ubuntu หนึ่งกับเครื่องอื่นของ Ubuntu บนเครือข่ายภายในบ้านเดียวกัน เมื่อฉันคลิกขวาที่โฟลเดอร์และเลือกตัวเลือกการแชร์มันบอกฉันว่าฉันต้องติดตั้งบริการแชร์เครือข่าย Windows เพื่อแชร์โฟลเดอร์ Windows เกี่ยวข้องกับเรื่องนี้อย่างไร ฉันไม่พยายามแชร์กับเครื่อง Windows ...

คำตอบ:


22

Windows เกี่ยวข้องกับเรื่องนี้อย่างไร ฉันไม่พยายามแชร์กับเครื่อง Windows ...

คุณพูดถูกสิ่งนี้อาจทำให้สับสน ดังนั้นขอให้ฉันพยายามอธิบายให้ชัดเจนก่อน:

วิธีแฟ้มหุ้น Windows และเครื่องพิมพ์เรียกว่าSMB ผู้คนจากโครงการSAMBAได้ใช้โปรโตคอลและข้อมูลจำเพาะทั้งหมดของ Microsoft สำหรับ Linux Ubuntu จึงรองรับไฟล์ประเภทเดียวกันกับ Windows ซึ่งเรียกว่า Samba

  • คุณสามารถใช้ SAMBA เพื่อแชร์ไฟล์ระหว่างเครื่อง Linux ในความเป็นจริงคุณอาจชอบมันในกรณีที่คุณมีเพื่อนมาด้วยคอมพิวเตอร์ Windows

  • หรือคุณสามารถใช้วิธีแบ่งปันไฟล์ของLinuxซึ่งก็คือ NFS (ระบบไฟล์เครือข่าย) - คำตอบของคำถามก่อนหน้านี้อธิบายถึงวิธีการใช้งาน (แต่มันค่อนข้างเทคนิค)

ดังนั้นเมื่อกล่องโต้ตอบตัวเลือกการแชร์ขอให้คุณติดตั้งแพคเกจคุณจะไม่ได้ติดตั้งซอฟต์แวร์ Microsoft หรือสิ่งใด ๆ ไปข้างหน้าและทำมันปลอดภัยอย่างสมบูรณ์

ภาคผนวก:

คุณสามารถลองเปิดใช้งานการแชร์ก่อนที่คุณจะทำตามคำแนะนำของ Salih Emin; หากไม่ได้ผลคุณจะได้รับคำเตือนง่ายๆคุณสามารถทำตามขั้นตอนที่ Salih อธิบายหากจำเป็น ฉันได้ลองใช้ระบบที่ติดตั้งใหม่และทันสมัยแล้วและฉันจำเป็นต้องทำเช่นนี้


1
ขอบคุณสำหรับคำอธิบาย ตลกที่ฉันพยายามหนีจาก Microsoft และปรากฎว่าแม้แต่ Linux ก็ใช้ผลงานของพวกเขา ฮึ.
EmmyS

4
ผู้คนแซมบ้าได้ใช้โปรโตคอลของ Microsoft ดีกว่า Microsoft มาก มีการปลอบใจบางอย่างที่นั่น :-)
Stefano Palazzo

8

ในปัจจุบันมีข้อผิดพลาดเล็ก ๆ ในสุวิมลซึ่งเป็น บริษัท จดทะเบียนใน Launchpad: ข้อผิดพลาด # ข้อผิดพลาดนี้ไม่ได้แจ้งให้ผู้ใช้ติดตั้งแพ็คเกจที่จำเป็นซึ่งจำเป็นในการตั้งค่าการแชร์ไฟล์ให้สมบูรณ์ จนกว่าจะมีการแก้ไขนี่คือวิธีแก้ปัญหาอย่างรวดเร็ว

คุณต้องติดตั้งlibapache2-mod-dnssdและเริ่มต้นใหม่ คลิกที่ลิงค์นี้เพื่อติดตั้งหรือค้นหาlibapache2-mod-dnssdใน Software Center

เมื่อติดตั้งแล้วให้ไปที่System → Preferences → Personal file Sharingและทำเครื่องหมายที่ช่อง 'แชร์ไฟล์สาธารณะในเครือข่าย'

ข้อความแสดงแทน

เมื่อเสร็จแล้วคุณควรจะสามารถดูคอมพิวเตอร์เครื่องอื่น ๆ ทั้งหมดในเครือข่ายของคุณที่ได้รับอนุญาตให้แชร์ไฟล์สาธารณะภายในโฟลเดอร์ Public เพียงคลิกที่สถานที่→เครือข่ายแล้วคุณจะเห็นคอมพิวเตอร์ที่มีอยู่ทั้งหมดและโฟลเดอร์สาธารณะที่แชร์

การดับเบิลคลิกที่ไอคอนเซิร์ฟเวอร์จะทำการติดตั้งโฟลเดอร์สาธารณะที่เกี่ยวข้องบนเดสก์ท็อปของคุณ

ผ่านข้อความลิงค์


แพ็คเกจเหล่านั้นเกี่ยวข้องกับเว็บเซิร์ฟเวอร์ apache หรือไม่? ฉันได้ติดตั้ง apache เป็นส่วนหนึ่งของ LAMP stack และไม่ต้องการทำลายมัน
EmmyS

1
หาที่ดี! (ฉันได้แก้ไขคำตอบโดยวิธีการแพคเกจนี้จะติดตั้ง apache2.2-bin เป็นการพึ่งพาดูเหมือนง่ายขึ้นด้วยวิธีนี้)
Stefano Palazzo

1
@EmmyS แพ็คเกจจะไม่ทำให้การติดตั้ง apache ของคุณหยุดชะงัก ฉันทำงานเหล่านั้นและอื่น ๆ โดยไม่มีปัญหา
RolandiXor

ฉันพบว่าลิงก์นี้มีประโยชน์ในการแบ่งปันไดเรกทอรีจริง ๆ : itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas

5

คุณสามารถรันเซิร์ฟเวอร์ SimpleHTTP ในเครื่อง linux และเข้าถึงบนเครื่องอื่น ๆ ได้

ขั้นตอน:

  1. ก่อนอื่นให้เริ่มต้นเทอร์มินัลจากโฟลเดอร์ที่จะแชร์
  2. ทำงานใน terminal - python -m SimpleHTTPServer
  3. ตรวจสอบ IP ifconfigของคุณโดยใช้
  4. ป้อนที่อยู่ IP ในเบราว์เซอร์ของเครื่องอื่น ๆ : 8000 (เช่น: หาก IP ของคุณคือ 127.3.4.123 จากนั้นในเบราว์เซอร์คุณพิมพ์ 127.3.4.123:8000)

คุณได้รับไฟล์ที่จำเป็นในโฟลเดอร์เพื่อดาวน์โหลด


4
ดาวน์โหลด! = share
EmmyS

สำหรับฉันมันเป็นคำตอบที่ดีถึงแม้ว่าสำหรับ Python3 มันpython3 -m http.server
VanDavv

2

ฉันเชื่อว่าเป็นสิ่งที่แพ็คเกจ SAMBA แสดงอยู่ในรายการหรือเป็นส่วนหนึ่งของคำอธิบาย คุณสามารถลองใช้การกำหนดค่าตามความชอบ -> การแชร์ไฟล์ที่ฉันเชื่อว่าใช้กลไกอื่น แซมบ้าเป็นสิ่งที่สะดวกในการติดตั้ง


ฉันตกอยู่ในความประทับใจ (อย่างไม่ถูกต้อง) ว่า Samba อนุญาตให้ใช้งานร่วมกันระหว่าง Linux และ Windows ฉันไม่ต้องการแบ่งปันกับ Windows เฉพาะกับเครื่อง Linux อื่น
EmmyS

ไม่คุณพูดถูก เครื่องทั้งสองเครื่องต้องติดตั้ง samba แน่นอน
Stefano Palazzo

ทั้งสองเครื่องจำเป็นต้องใช้โปรโตคอล SMB Windows ทำเช่นนี้ทางเดียว เครื่อง Linux ทำกับ samba
Hedgehog สมองเสื่อม

2

คุณสามารถติดตั้ง "qweborf" มันจะแบ่งปันไดเรกทอรีผ่าน HTTP และโฮสต์อื่น ๆ จะสามารถเข้าถึงด้วยเบราว์เซอร์

นอกจากนี้ยังสามารถเปิดใช้งาน webdav และเปิดใช้งานไดเรกทอรีที่จะเมาท์เป็นอ่าน / เขียนระบบไฟล์ (ทดสอบด้วย davfs2, KDE, Gnome2, OsX)


2

หากคุณต้องการผสานรวมอย่างราบรื่นใน Ubuntu และคุณไม่สนใจความเข้ากันได้กับ Windows SSH เป็นฮับเบิลเบอรีของคุณ

ดูฉันจะแชร์ไฟล์ระหว่างสองเครื่อง Linux ผ่าน LAN ได้อย่างไร

คุณอาจต้องติดตั้งเซิร์ฟเวอร์ SSH ด้วย:

sudo apt-get install openssh-server

จากแอพตัวจัดการไฟล์ในไคลเอนต์ของคุณคุณสามารถไปยังเซิร์ฟเวอร์ของคุณด้วย:

sftp://servername.local

ในการเข้าถึงไฟล์จากเทอร์มินัลหรือโดยทางโปรแกรมใช้sshfsเพื่อสร้างจุดเมานท์ในระบบไฟล์ของลูกค้า


วิธีการเขียนโปรแกรมอื่น ๆ ของการคัดลอกไฟล์ผ่าน SSH รวมscpและ rsync(ดียิ่งขึ้น)
สูงศักดิ์

2

สำหรับเครือข่าย Linux เท่านั้นฉันพบว่า SSHFS มีความเสถียรและรวดเร็วอย่างยิ่ง ฉันมีสองเครื่อง Xubuntu (18.04) การแชร์ / โฮมโฟลเดอร์ผ่าน SSH

ต่อไปนี้เป็นวิธีตั้งค่าsshfsและเชื่อมต่อใหม่โดยอัตโนมัติหลังจากรีบูตโดยใช้fstabโดยไม่ต้องระบุรหัสผ่าน ขอบคุณมากสำหรับผู้ใช้เซิร์ฟเวอร์ kubanczykสำหรับวิธีการเชื่อมต่ออีกครั้งหลังจากการระงับ / ดำเนินการจากระยะไกล

ฉันจะใช้ "Local machine - surfbox" สำหรับคอมพิวเตอร์ที่คุณเชื่อมต่อและ "Remote machine - devbox" สำหรับคอมพิวเตอร์ที่คุณกำลังเชื่อมต่อ

แทนที่ "remoteuser" ด้านล่างด้วยชื่อผู้ใช้ที่คุณลงชื่อเข้าใช้ด้วยบนเครื่องระยะไกลและ "localuser" ด้วยชื่อผู้ใช้ที่คุณเข้าสู่ระบบด้วยเครื่อง Local เพื่อตรวจสอบชื่อผู้ใช้พิมพ์echo $USERใน terminal บนเครื่องระยะไกลและท้องถิ่น

นอกจากนี้ตรวจสอบ userID ของคุณและ groupID ทั้งคู่ควรเป็น 1,000

GroupID: id -g localuser หมายเลขผู้ใช้:id -u localuser

1. รับที่อยู่ IP ของเครื่องท้องถิ่นและระยะไกลของคุณ

hostname -I

ฉันจะใช้ 192.168.1.150 สำหรับ Local Machine ('surfbox') และ 192.168.1.151 สำหรับ Remote Machine ('devbox')

2. ติดตั้งแพคเกจบนเครื่อง Local และ Remote

sudo apt install sshfs fuse ssh

3. สร้างฟิวส์กลุ่มและเพิ่มผู้ใช้โลคัล

สร้างกลุ่ม: sudo groupadd fuse

เพิ่ม Localuser ให้กับกลุ่ม: sudo usermod -a -G fuse $user

4. เปิดใช้งาน "allow_other" ในการกำหนดค่าฟิวส์

เราจะต้องใช้ตัวเลือกนี้เมื่อติดตั้งใน fstab

แก้ไข/etc/fuse.confด้วยเครื่องมือแก้ไขบรรทัดคำสั่งของคุณ นำแฮชแท็กออกก่อนuser_allow_otherและบันทึก

5. สร้างคีย์ SSH บน Local Machine

อย่าให้รหัสผ่านเมื่อได้รับแจ้ง เพียงกด Enter เพื่อเว้นว่าง

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

คีย์จะถูกเก็บไว้ในโฟลเดอร์ home / home ไดเรกทอรีท้องถิ่น /.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 folder

เลือกชื่อที่เหมาะสมสำหรับเครื่องรีโมตของคุณ

sudo mkdir /mnt/devboxhome

8. ติดตั้ง Remote machine / home directory จากเทอร์มินัล

ไวยากรณ์สำหรับ 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

ตัวอย่าง: สมมติว่า "สตีฟ" เป็นชื่อผู้ใช้ทั้งบนเครื่องโลคอลและรีโมท

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. ยืนยัน: เรียกดูรีโมต Machine / home directory

ในเทอร์มินัลบน Local machine ตอนนี้คุณสามารถแสดงรายการ Remote machine / home directory ภายใต้ / mnt / devboxhome

cd /mnt/devboxhome ls

หรือใช้ Nautilus เพื่อเรียกดูไดเรกทอรี ยิ่งใหญ่

10. เปิดใช้งานการเชื่อมต่อใหม่หลังจากรีบูต

เราจะเพิ่มรายการใน / etc / fstab เพื่อให้สิ่งนี้เกิดขึ้น คุณจะต้องใช้หมายเลขประจำเครื่องในเครื่องของคุณและดูคำแนะนำหากคุณพลาด แก้ไข / 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ทำให้เคอร์เนลรอจนกระทั่งเครือข่ายขึ้นจนกระทั่งพยายามติดตั้งไดเรกทอรีในเครื่องระยะไกล
  • เนื่องจากเรารันเป็นรูทระหว่างการบู๊ตเราจึงต้องระบุkeyfileซึ่งเก็บไว้ในโฮมไดเร็กตอรี่ของ localuser
  • allow_other - ผู้ใช้อื่นที่ไม่ใช่ผู้ที่กำลังทำการติดตั้งจริงสามารถเข้าถึงระบบไฟล์ที่เมาท์ได้
  • idmap = user - แปล UID ของการเชื่อมต่อผู้ใช้เท่านั้น
  • เชื่อมต่อใหม่, ServersLiveInterval, ServerAliveCountMax - ssh ส่งการส่ง Ping แบบ keep-alive หากการServerAliveCountMaxปิงติดต่อกันล้มเหลวให้เชื่อมต่อใหม่

ผู้ใช้ที่ล็อกอินในฐานะ steve บนเครื่อง Local และ Remote จะมี:

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. รีบูต

ตอนนี้คุณควรจะสามารถเข้าถึงรีโมตเครื่อง / โฮมไดเร็กตอรี่ใน Local machine / mnt / devboxhome ใน Nautilus คุณสามารถลากโฟลเดอร์นี้ไปยังแถบสถานที่

12. ทำซ้ำ

ทำตามขั้นตอนเดียวกันอีกครั้งในเครื่องระยะไกลเพื่อสร้าง / home directory ของ Local machine แชร์


คำตอบที่ดี ฉันไม่รู้ตัวหนึ่งสามารถเมานต์ระบบไฟล์ sshfs ใน fstab ขอบคุณสำหรับสิ่งนั้น
หินอ่อนอินทรีย์

0

วิธีแชร์ไฟล์ของฉัน:

sudo npm install -g http-server

ไปที่โฟลเดอร์ที่คุณต้องการแชร์เปิดเทอร์มินัลแล้วรันคำสั่งนี้:

http-server -o 

คุณจะสามารถเข้าถึงโฟลเดอร์นั้นในทุกเครื่องในเครือข่ายเดียวกันบนที่อยู่ IP ที่ระบุโดยเอาท์พุทของคำสั่งนั้น


0

zx81roadkillถูกต้องใช้ "sshfs" แซมบ้าเป็นอึ NFS เป็นขยะ Sshfs สามารถใช้งานได้อย่างสมบูรณ์จากคอมพิวเตอร์ของฉันที่นี่ในแคลิฟอร์เนียไปยังคอมพิวเตอร์ในอาร์เจนตินา มันปลอดภัยทั้งหมดมันเร็วพอ ๆ กับสิ่งอื่น (ฉันมีสาย gibabit)

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 จะมีไฟล์ทั้งหมดของ "ชื่อผู้ใช้" ใน "เครื่อง" อย่าไปยุ่งกับ Samba หรือ NFS มันเป็นความเจ็บปวดที่ไม่มีจุดหมายในก้นเพื่อกำหนดค่าหรือเซ็ตอัพ

ในการเลิกเมานท์:

fusermount -u /tmp/my_mount

และหากล้มเหลว (ด้วยเหตุผลใดก็ตาม):

umount -f /tmp/my_mount

ข้อมูลทั้งหมดที่ส่งผ่านจุดเมานท์จะถูกเข้ารหัส ทำไมนี่ไม่ใช่มาตรฐานวิธีที่ได้รับการยอมรับโดยสิ้นเชิงในการติดตั้งกับเครื่องระยะไกลเป็นเรื่องลึกลับสำหรับฉัน มันยอดเยี่ยมกว่าวิธีการอื่น ๆ อย่างมากในแง่ของความเรียบง่าย

หากคุณต้องการความเร็วแบบดิบบางทีชิ้นส่วนของขยะ Samba ที่ป่องจะทำหรือ NFS ฉันไม่รู้ 100 MB / s + นั้นดีพอสำหรับฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.