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


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.