ถ่ายโอนไฟล์โดยตรงระหว่างคอมพิวเตอร์สองเครื่องบนอินเทอร์เน็ต


27

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

ฉันต้องการที่จะทำโดยไม่ต้องให้ผู้ใช้ปลายทางเชื่อมต่อกับเซิร์ฟเวอร์ที่สามเพราะวิธีการที่ข้อมูลจะไหลผ่านเครื่องxyz.comอาจทำให้การถ่ายโอนช้าลงและเสี่ยงต่อความปลอดภัย

ฉันต้องการหลีกเลี่ยงการตั้งค่าเซิร์ฟเวอร์ FTP ทั้งหมดสำหรับการถ่ายโอนไฟล์เป็นครั้งคราว เพื่อให้ห่างไกลฉันได้ค้นพบJetBytes , Click2CopyและPipeBytes บริการบนเว็บเหล่านั้นควรทำให้การถ่ายโอนเป็นเรื่องง่าย อย่างไรก็ตามการรับส่งข้อมูลผ่านเซิร์ฟเวอร์ของพวกเขาดังนั้นจึงไม่ดีกับสิ่งที่ฉันต้องการ

ฉันต้องการให้การถ่ายโอนโดยตรงระหว่างลูกค้ากับฉัน การเข้ารหัสจะเป็นคุณสมบัติเพิ่มเติมที่ดี

ฉันรู้ว่าการทำเช่นนั้นฉันต้องเปิดพอร์ตหนึ่งพอร์ตบนคอมพิวเตอร์ของฉันและกำหนดค่าการเปลี่ยนเส้นทางบิตพอร์ตบนเราเตอร์ของฉัน อย่างไรก็ตามการแวะผ่าน NAT ก็เป็นการเพิ่มเติมที่ดีเช่นกัน

คำถามของฉันคือ:

มีวิธีที่ง่ายสำหรับการถ่ายโอนไฟล์โดยตรงจากจุดหนึ่งไปยังอีกจุดหนึ่งระหว่างคอมพิวเตอร์สองเครื่องหรือไม่? (ถ้าเป็นไปได้ด้วยการเข้ารหัสและการแวะผ่าน NAT)


คุณกำลังมองหาโซลูชันที่ถ่ายโอนผ่าน HTTP หรืออะไรเท่านั้น
Pacerier

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

1
อาจจะโอนย้ายโปรแกรมไฟล์โดยตรงsourceforge.net/projects/file-transfer - โอเพ่นซอร์ส, ลากและวาง, สัญญาเป็นทางเลือก upnp (บน xp?), teredo, การเชื่อมต่อที่ปลอดภัยและการค้นพบอัตโนมัติ, (อุปกรณ์เสริมต้องการเห็บในหน้าการตั้งค่า )
n611x007

เราเปิดใหม่ได้ไหม ฉัน
อ้างสิทธิ์

คำตอบ:


13

วิธีที่สกปรกที่สุดถ้าคุณใช้ * nix คือใช้ netcat ( nc) เพื่อ cat ไฟล์ไปยังรีโมตโฮสต์ แต่ถ้าคุณต้องการเข้ารหัสคุณอาจใช้ SCP / SSH เช่นกัน

คุณต้องตระหนักว่าหากฝ่ายใดฝ่ายหนึ่งอยู่เบื้องหลัง NAT และคุณไม่ต้องการตั้งค่าการส่งต่อพอร์ตจึงเป็นไปไม่ได้ที่จะทำการเชื่อมต่อโดยตรงโดยไม่ต้องเชื่อมต่อกับเซิร์ฟเวอร์ของบุคคลที่สามก่อน เซิร์ฟเวอร์ไม่จำเป็นต้องถ่ายทอดการรับส่งข้อมูล (ดูhttp://en.wikipedia.org/wiki/UDP_hole_punching ) และส่วนใหญ่ไม่ได้ใช้แบนด์วิธแพง

ตัวอย่างเช่น Skype จะพยายามใช้วิธีการแวะผ่าน NAT หลายวิธีเพื่อสร้างการเชื่อมต่อโดยตรงก่อนที่จะหวนกลับไปยังการรับส่งข้อมูลผ่านโหนดซูเปอร์ของพวกเขา (Skype เป็นเครือข่าย P2P ที่ดีมาก)

สำหรับปัญหาบัญชี ฉันเดาว่ามันหลีกเลี่ยงไม่ได้ วิธีการทั้งหมดจะต้องมีการกำหนดค่าหรือการตั้งค่าบางประเภทซึ่งมักจะยากกว่าการลงทะเบียนบัญชี


3
cryptcatคือ netcat ที่มีการเข้ารหัส
Journeyman Geek

netcat พร้อมใช้งานสำหรับ Windows ฉันชอบวิธีนี้
เบอนัวต์

สำหรับการอ้างอิง Skype จะไม่ใช้ P2P อีกต่อไป: support.skype.com/en/faq/FA12381/what-is-the-cloud
Radderz

10

โซลูชันที่ใช้ WebRTC มอบสิ่งที่คุณต้องการในรูปแบบที่ง่ายที่สุด คุณเชื่อมต่อกับเว็บไซต์บุคคลที่สาม แต่เป็นเพียงการเชื่อมต่อกับเพื่อน ๆ ไม่ใช่ส่วนการถ่ายโอนไฟล์

บริการตัวอย่าง:
https://www.justbeamit.com/
https://www.sharedrop.io/

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


ในเครือข่ายองค์กรของฉัน (มีความปลอดภัยสูง) reep.io ไม่ทำงาน แต่ justbeamit.com ทำเช่นนั้น! ฉันคาดว่าทั้งสองบริการจะทำงานเหมือนกันเพราะทั้งคู่ใช้เทคโนโลยี WebRTC แต่ดูเหมือนว่าจะซับซ้อนกว่านั้นเล็กน้อย ขอบคุณมากสำหรับคำใบ้!
gaborous

8

คุณสามารถซิงค์ไฟล์ระหว่างคอมพิวเตอร์ระยะไกลโดยใช้ rsync ยูทิลิตี้นี้สามารถใช้ได้สำหรับ Windows ในCygwinหรือคุณสามารถติดตั้งได้กับก่อนบรรจุcwrsync

ฉันจะทิ้งคำตอบก่อนหน้าไว้ที่นี่ แต่ด้วยการเปิดเผยล่าสุดเกี่ยวกับ NSA ฉันจะไม่แนะนำ Skype สำหรับการถ่ายโอนไฟล์ที่ปลอดภัยอีกต่อไป

คุณสามารถส่งไฟล์ได้โดยตรงไปยังบุคคลอื่นโดยใช้Skype บางครั้ง Skype ก็ใช้งานได้เมื่อผู้ใช้ทั้งสองอยู่หลัง NAT หากคุณมีขนาดเล็กพอที่จะเปิดพอร์ตบนเราเตอร์ของคุณการทำเช่นนั้นจะเพิ่มโอกาสในการเจรจาเชื่อมต่อโดยตรง

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


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

@Benoit - ฉันไม่เคยมี Skype ไม่สามารถส่งไฟล์ได้ ทราฟฟิกเดียวที่ไปยังเซิร์ฟเวอร์ skype คือการตั้งค่าการเชื่อมต่อ ข้อมูลทั้งหมดระหว่างคุณกับผู้รับ สำหรับข้อกำหนดในการให้บริการที่ไม่ชัดเจนมากเนื่องจากการแบ่งปันไฟล์เป็นส่วนสำคัญของ skype
Nifle

@Benoit Skype จะใช้การเชื่อมต่อโดยตรงเสมอ แม้แต่ฐานข้อมูลผู้ใช้ Skype ก็ยังถูกแจกจ่าย ประโยชน์ของ Skype คือการเข้ารหัสแบบครบวงจร Skype ไม่เห็นข้อมูลที่คุณกำลังส่ง (+1 btw)
squirlle

5

หากการรัน Linux / unix ssh ของคุณเป็นวิธีที่ปลอดภัยในการส่งไฟล์ในรูปแบบเซิร์ฟเวอร์ลูกค้า พอร์ตส่งต่อจำเป็นสำหรับการเชื่อมต่อขาเข้าถ้าอยู่เบื้องหลัง NAT แม้ว่า


3

FTP มันมีมานานแล้ว มันไม่ปลอดภัยเหมือนห่า และมันง่าย

ดาวน์โหลด Filezilla ซึ่งสามารถใช้งานได้ทั้งเซิร์ฟเวอร์และไคลเอนต์ ตรวจสอบให้แน่ใจว่าไฟร์วอลล์ของคุณได้รับการตั้งค่าให้อนุญาตขาออก เตรียมไฟล์ปลายทางของคุณให้ดาวน์โหลดและเชื่อมต่อกับเซิร์ฟเวอร์ filezilla ของคุณ โอนไฟล์

เช่นเดียวกับที่บิตทั้งหมดของคุณถูกเหวี่ยงผ่านอินเทอร์เน็ตเพื่อให้ทุกคนได้เห็นเช่นซักรีดจำนวนมากพลิกในสายลมในสนามหลังบ้าน


ยังไม่น่าเชื่อถือ คุณต้องตรวจสอบแฮชเพื่อให้แน่ใจว่าสิ่งที่คุณได้รับคือสิ่งที่คุณส่ง TCP / IP อ้างว่าเชื่อถือได้ แต่ในตอนท้ายของวันนั้นไม่ได้ 100% ตัวอย่างเช่นเพียงแค่พยายามส่งข้อมูลสำรองหลายกิกะไบต์จำนวนมากและพบว่ารหัสไปรษณีย์ที่ฉันทำมีข้อผิดพลาดในเป้าหมาย แต่ไม่ได้อยู่ในแหล่งที่มา ไม่พบข้อผิดพลาด Hashes สำหรับภาพรวมนั้นดี แต่ก็ยังให้โอเคที่ผิดพลาดได้ hash หลาย ๆ อันที่ 1 mb แต่ละจุดนั้นดีกว่า ดังนั้นฝนตกหนักระหว่างคอมพิวเตอร์สองเครื่องจะดีกว่าสำหรับไฟล์ขนาดใหญ่
rxantos

FTP มีช่วงเวลาที่ยากลำบากกับไฟล์ที่มีขนาดใหญ่จริงๆ (มันไม่เคยพิจารณาการใช้ไฟล์ที่มีขนาดใหญ่อย่างที่เรามีในปัจจุบันเมื่อมันถูกพัฒนาขึ้นมา) SFTP เป็นโปรโตคอลที่มีอุปกรณ์ครบครันที่ดีกว่าสำหรับไฟล์ขนาดใหญ่และมีความปลอดภัยมากกว่า FTP
MaQleod

3

ผมเคยเขียนบล็อกโพสต์เกี่ยวกับการถ่ายโอนไฟล์กับงูหลามของในตัวเซิร์ฟเวอร์ HTTP ในระยะสั้นการติดตั้งหลามเปิดคำสั่งพรอมต์ไปยังไดเรกทอรีที่มีไฟล์ไปใช้ร่วมกันและดำเนินการcd python -m SimpleHTTPServerสะดวกมากหากคุณใช้งานบน Linux หรือ OS X เนื่องจากมีการติดตั้ง Python เป็นค่าเริ่มต้น

หากคุณอยู่หลัง NAT คุณต้องตั้งค่าการส่งต่อพอร์ตบนเราเตอร์ของคุณหรือบางสิ่งบางอย่าง


1
ลิงก์ 'โพสต์บล็อก' ไปที่เว็บไซต์สแปม
MFB

@MFB ฉันเดาว่ามันเคยไปที่เว็บไซต์ที่ถูกกฎหมาย แต่เขาสูญเสียการควบคุมเว็บไซต์และตอนนี้มันเปลี่ยนเส้นทางไปยังหน้าประเภทโดเมนที่พัก ฉันได้แก้ไขลิงก์ในตอนนี้ หากต้องการเห็น phunehehe โปรดแสดงความคิดเห็นเกี่ยวกับลิงค์นี้ หากคุณมีสำเนาโพสต์บล็อกที่อื่นคุณสามารถแก้ไขได้ แต่ระวังว่าการเชื่อมโยงไปยังสแปมโดยเจตนาจะไม่ได้รับการยอมรับ
nhinkle

ที่ยาวสุดท้ายที่ฉันมีการกู้คืนโพสต์บล็อกปรับปรุง :)
phunehehe

2

เว็บเซิร์ฟเวอร์ที่สามารถใช้การข้ามผ่าน UPnP NATจะทำงานผู้รับจะต้องใช้เว็บเบราว์เซอร์เท่านั้น การเข้ารหัสโบนัสเป็นเรื่องง่ายด้วยเว็บเซิร์ฟเวอร์เพียงใช้ https

นี่คือตัวอย่างหนึ่ง (payware 99USD) RaidenHTTPD




1

คุณสามารถลองใช้การถ่ายโอนโฟลเดอร์จากhttp://www.foldertransfer.comซึ่งสามารถถ่ายโอนไฟล์โดยตรงระหว่างคอมพิวเตอร์สองเครื่องบนอินเทอร์เน็ต มันสามารถตอบสนองความต้องการของคุณได้อย่างเต็มที่


1

ทำไมไม่มีใครพูดถึง IRC DCC transfer? https://en.wikipedia.org/wiki/Direct_Client-to-Clientคุณจะได้รับไคลเอนต์ HexChat ติดตั้งในคอมพิวเตอร์ทั้งสองคุณป้อนสมมติว่า Freenode แล้วสร้างช่องทางสำหรับทั้งสองเข้าร่วมแล้วคลิกขวาที่ อื่น ๆ "ผู้ติดต่อ / PC" และส่งไฟล์ เทคโนโลยีเก่าที่ใช้งานได้ดีนอกเหนือจาก Hyperterminal สำหรับการเชื่อมต่อโดยตรงผ่านสายโทรศัพท์ประมาณปี 1995-1998, DCC เป็นวิธีหลักในการดาวน์โหลดเพลงและภาพยนตร์


1

Magic Wormhole สามารถใช้กับสิ่งนี้ได้ บน Ubuntu คุณสามารถติดตั้งผ่าน apt-get (สามารถใช้ได้ผ่าน Python pip):

sudo apt install magic-wormhole

ในการส่งไฟล์คุณเพียงแค่บอกสิ่งที่จะส่ง

wormhole send README.md

นี่จะเอาท์พุทบรรทัดคำสั่งที่คุณควรเรียกใช้เมื่อสิ้นสุดการรับ รวมถึงรหัสลับ (ซึ่งเป็นสิ่งที่คุณสามารถอ่านได้ทางโทรศัพท์) คุณไม่ได้ระบุชื่อเครื่องหรือที่อยู่ IP ใด ๆ Wormhole สร้างการเชื่อมต่อโดยอัตโนมัติและเข้ารหัสไฟล์ที่จะถ่ายโอน

https://magic-wormhole.readthedocs.io/en/latest/welcome.html

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