Пряма передача файлу між двома комп'ютерами в Інтернеті


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

Чи можемо ми знову відкрити це? Я переформулював це для реалізації пропозицій
n611x007

Відповіді:


13

Найбруднішим способом, якщо ви використовуєте * nix, є використання netcat ( nc) для передачі файлу на віддалений хост. Але якщо ви хочете шифрування, ви також можете використовувати 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/

EDIT: Я розумію, що це не відповідає всім вимогам ОП, але є ще одне, дуже корисне рішення: Firefox Send . Використовуючи це, ви завантажуєте свій файл на сторонній сервер у зашифрованому вигляді. Служба надає вам URL-адресу, якою ви можете поділитися з іншими. URL-адреса також містить ключ для розшифрування файлу. Потім вони можуть завантажити файл. Файл автоматично видаляється після встановленої кількості завантажень або через 24 години. Сервер ніколи не бачить ключ і тому не може розшифрувати файл. Перевагою використання стороннього сервера є те, що учаснику спільного доступу та стороні, що завантажує, не потрібно одночасно бути в мережі.


У моїй корпоративній (високо захищеній) мережі reep.io не працював, але justbeamit.com зробив! Я б очікував, що обидві служби працюватимуть однаково, оскільки вони базуються на технології WebRTC, але, здається, це трохи складніше, ніж це. Дякую за підказку!
габоровий

8

Ви можете синхронізувати файли між віддаленими комп'ютерами за допомогою rsync. Ця утиліта доступна для Windows у Cygwin , або ви можете встановити її за допомогою попередньо упакованого cwRsync .

Я залишу свою попередню відповідь тут недоторканою, але, зважаючи на останні розкриття інформації про NSA, я більше не рекомендую Skype для безпечної передачі файлів.

Ви можете надіслати файл безпосередньо іншій особі за допомогою Skype . Skype іноді навіть працює, коли обоє користувачів стоять за NAT. Якщо ви досить вразливі, щоб відкрити порт на маршрутизаторі, це збільшить ймовірність узгодження прямого з'єднання.

Загалом, багато програм для чатів включають механізм спільного використання / надсилання файлів. Більшість не постачає шифрування за замовчуванням, як Skype. Але поки у вас і вашого одержувача один клієнт чату, у вас є "простий інструмент" для обміну файлами.


Дякую за цю відповідь. Проблема тут полягає в тому, що мені завжди доводиться покладатися на третю компанію, створити обліковий запис спеціально для цього, і ця послуга може порушитися або умови служби можуть змінитися. Якщо можливо, я хотів би цього уникнути. Однак я не знав, що Skype може домовитися про прямий зв'язок. Все ж з вашої відповіді я можу зробити висновок, що це не завжди так?
Бенуа

@Benoit - У мене ніколи не було скайпу, щоб не міг надіслати файл. Єдиний трафік, який йде на скайп-сервери, - це налаштування з'єднання. Усі дані передаються між вами та вашим одержувачем. Що стосується умов обслуговування, які дуже непримітні, оскільки обмін файлами є центральною частиною скайпу.
Nifle

@Benoit Skype завжди використовує прямі з'єднання; навіть розподіляється база даних користувачів Skype. Користь для Skype - його шифрування в кінці; Skype не може бачити дані, які ви передаєте. (+1 btw)
біг

5

Якщо ваш запущений Linux / unix ssh - це безпечний спосіб передачі файлів у моделі клієнтського сервера. порт вперед, необхідний для вхідних з'єднань, якщо позаду NAT.


3

FTP Це вже віками. Це, як чорт, небезпечно. І це просто.

Завантажте Filezilla, який може працювати як сервер, так і клієнт. Переконайтеся, що ваш брандмауер встановлений, щоб він міг виходити. Запропонуйте призначити завантаження filezilla та підключіться до свого серверу filezilla. Передача файлу.

Просто так, всі ваші шматочки перекидаються по Інтернету, щоб усі побачили, як стільки білизни перелітає на вітрі на задньому дворі.


Також не є такою надійною. Вам потрібні хеш-чеки, щоб переконатися, що ви отримали саме те, що ви надіслали. TCP / IP претендує на надійність, але в кінці дня не на 100%. Наприклад, я просто спробував надіслати резервну копію декількох гігабайтних байтів і виявив, що зроблений я ZIP-код має помилки на цілі, але не на джерелі. Помилок не показано Хеші для цілого хороші, але все одно можуть дати вам помилковий лад. Кілька хешів у кожному з точок на 1 мб краще. Тож торрент між двома комп'ютерами був би кращим для великого файлу.
rxantos

FTP не має труднощів із дійсно, дуже великими файлами (він ніколи не вважав використання файлів таким великим, як у нас сьогодні, коли він був розроблений). SFTP - це набагато краще обладнаний протокол для великих файлів, а також набагато, набагато більш безпечний, ніж FTP.
MaQleod

3

Я колись писав повідомлення в блозі про передачу файлів із вбудованим HTTP-сервером Python . Коротше кажучи, встановіть Python, відкрийте командний рядок cdдо каталогу з файлами для спільного використання та виконання python -m SimpleHTTPServer. Дуже зручно, якщо ви працюєте в Linux або OS X, оскільки Python встановлений за замовчуванням (його також легко встановити в Windows).

Якщо ви стоїте за NAT, вам потрібно налаштувати переадресацію портів на маршрутизаторі чи щось таке (про що, мабуть, ви вже знаєте).


1
Посилання "blog post" переходить на спам-сайт
MFB

@MFB Я здогадуюсь, що раніше він перейшов на його законний веб-сайт, але з тих пір він втратив контроль над сайтом, і тепер він переспрямовує на сторінку типу припаркованого домену. Я вже відредагував посилання. Для phunehehe, якщо ви бачите це, будь ласка, коментуйте посилання. Якщо у вас є копія публікації в блозі десь в іншому місці, ви можете це відредагувати, але будьте обережні, що навмисне посилання на спам не буде допущено.
nhinkle

нарешті я відновив повідомлення в блозі, оновлений :)
phunehehe

2

Веб-сервер, який може робити обхід UPnP NAT , спрацював би, одержувачеві потрібен був би лише веб-браузер. Оскільки бонусне шифрування легко за допомогою веб-сервера, просто використовуйте https.

Ось один приклад (платне програмне забезпечення 99USD) RaidenHTTPD




1

Ви можете спробувати перенести папку з http://www.foldertransfer.com , яка може направити передачу файлу між двома комп'ютерами в Інтернеті. Це може повністю задовольнити ваші потреби.


1

Чому ніхто не згадує передачу IRC DCC? https://en.wikipedia.org/wiki/Direct_Client-to-Client , ви отримуєте клієнта HexChat, встановлюєте його на обох комп’ютерах, ви вводимо, скажімо, Freenode, а потім створюємо канал для обох приєднань, потім клацніть правою кнопкою миші інший "контакт / ПК" та відправити файл. Стара технологія, яка завжди працює, окрім гіпертерміналу для прямого зв’язку на комутацію, близько 1995-1998, DCC був основним способом завантаження музики та фільмів.


1

Для цього можна використовувати чарівну червоточину. У 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.