Bezpośredni transfer pliku między dwoma komputerami w Internecie

27

Szukam prostego, ale bezpośredniego sposobu na przeniesienie pliku dowolnego rodzaju i dowolnej wielkości między dwojgiem ludzi. Jeśli to możliwe, posiadanie tylko przeglądarki internetowej, bez konieczności przechowywania pliku na trzecim komputerze.

Chcę to zrobić bez wymagania od użytkowników końcowych łączenia się z trzecim serwerem, ponieważ w ten sposób dane będą przepływać przez maszynę xyz.com, prawdopodobnie spowalniając transfer i stwarzając zagrożenie bezpieczeństwa.

Chciałbym uniknąć konfigurowania całego serwera FTP tylko do sporadycznych transferów plików. Do tej pory odkryłem JetBytes , Click2Copy i PipeBytes . Te usługi sieciowe powinny ułatwić transfer. Jednak ruch przechodzi przez ich serwery, więc nie są dobre do tego, czego chcę.

Chcę, aby przelew odbywał się bezpośrednio między klientem a mną. Szyfrowanie byłoby miłą dodatkową funkcją.

Wiem, że tak robię, muszę otworzyć jeden port na komputerze i skonfigurować przekierowanie portów na routerze. Jednak przemiana NAT byłaby również miłym dodatkiem.

Moje pytanie brzmi:

Czy istnieje prosty sposób na jeden bezpośredni transfer plików między dwoma komputerami, bez stron trzecich? (jeśli to możliwe, z szyfrowaniem i translacją NAT)

Benoit
źródło
szukasz rozwiązania, które przenosi tylko przez HTTP czy co?
Pacerier
Osobiście korzystam z chrootowego, uwięzionego serwera WWW z włączonym autoindeksowaniem, aby udostępniać pliki innym osobom. Następnie mam uwięzione anonimowe konto ftp, którego ludzie mogą używać do wysyłania plików bezpośrednio do mnie. Rozwiązanie Skype to coś, co powiedziałbym mojej mamie, gdyby chciała udostępnić komuś plik. To lepsze niż używanie załączników e-mail.
isuldor
1
może bezpośredni program do przesyłania plików sourceforge.net/projects/file-transfer - open source, przeciągnij i upuść, obiecuje opcjonalnie upnp (na xp?), teredo, bezpieczne połączenia i automatyczne wykrywanie, (opcjonalne rzeczy wymagają
zaznaczeń na
Czy możemy to ponownie otworzyć? Przeredagowałem to, aby wprowadzić sugestie
n611x007,

Odpowiedzi:

13

Najbrudniejszym sposobem używania * nix jest użycie polecenia netcat ( nc) w celu przechwycenia pliku na zdalnym hoście. Ale jeśli chcesz szyfrować, równie dobrze możesz użyć SCP / SSH.

Musisz zdać sobie sprawę, że jeśli którakolwiek ze stron stoi za NAT i nie chcesz konfigurować przekierowania portów, to niemożliwe jest nawiązanie bezpośredniego połączenia bez uprzedniego połączenia z serwerem innej firmy. Serwer niekoniecznie musi przekazywać ruch (patrz http://en.wikipedia.org/wiki/UDP_hole_punching ) i większość z nich nie musi, ponieważ przepustowość jest kosztowna.

Na przykład Skype spróbuje użyć wielu metod przejścia NAT w celu ustanowienia bezpośredniego połączenia, zanim wróci do przekazywania ruchu przez swoje superwęzły. (Skype to bardzo sieć P2P).

Jeśli chodzi o problem z kontem. Myślę, że to nieuniknione. Wszystkie metody wymagają pewnego rodzaju konfiguracji lub konfiguracji, które są zwykle trudniejsze niż rejestracja konta.

billc.cn
źródło
3
cryptcat to netcat z szyfrowaniem
Journeyman Geek
Netcat jest również dostępny dla systemu Windows. Lubię to.
Benoit,
Dla porównania, Skype nie używa już P2P: support.skype.com/en/faq/FA12381/what-is-the-cloud
Radderz,
10

Rozwiązania oparte na WebRTC dają to, czego potrzebujesz, w być może najprostszej formie. Łączysz się z witryną strony trzeciej, ale służy to tylko połączeniu peerów, a nie części transferu plików.

Przykładowe usługi:
https://www.justbeamit.com/
https://www.sharedrop.io/

EDYCJA: Rozumiem, że to nie spełnia wszystkich wymagań OP, ale istnieje inne, bardzo użyteczne rozwiązanie: Firefox Send . Korzystając z tego, przesyłasz plik na serwer innej firmy w postaci zaszyfrowanej. Usługa daje ci adres URL, który możesz udostępnić innym. Adres URL zawiera również klucz do odszyfrowania pliku. Następnie mogą pobrać plik. Plik jest automatycznie usuwany po określonej liczbie pobrań lub po 24 godzinach. Serwer nigdy nie widzi klucza, więc nie może odszyfrować pliku. Zaletą korzystania z serwera innej firmy jest to, że strona udostępniająca i strona pobierająca nie muszą być jednocześnie online.

rv
źródło
W mojej sieci korporacyjnej (wysoce zabezpieczonej) reep.io nie działało, ale justbeamit.com! Spodziewałbym się, że obie usługi będą działały tak samo, ponieważ obie są oparte na technologii WebRTC, ale wydaje się, że jest to trochę bardziej skomplikowane. Bardzo dziękuję za podpowiedź!
nudny
8

Możesz synchronizować pliki między komputerami zdalnymi za pomocą rsync. To narzędzie jest dostępne dla systemu Windows w programie Cygwin lub można je zainstalować za pomocą wstępnie spakowanego programu cwRsync .

Moja poprzednia odpowiedź pozostawiam nietknięta, ale biorąc pod uwagę ostatnie informacje na temat NSA, nie polecam już Skype'a do bezpiecznego przesyłania plików.

Możesz wysłać plik bezpośrednio do innej osoby za pomocą Skype . Czasami Skype działa nawet wtedy, gdy obaj użytkownicy stoją za NAT. Jeśli jesteś wystarczająco bystry, aby otworzyć port na routerze, zwiększy to prawdopodobieństwo negocjacji bezpośredniego połączenia.

Mówiąc szerzej, wiele programów do czatu zawiera mechanizm udostępniania / wysyłania plików. Większość nie zapewnia domyślnie szyfrowania, takiego jak Skype. Ale dopóki ty i twój odbiorca macie tego samego klienta czatu, macie „proste narzędzie” do udostępniania plików.

isuldor
źródło
Dziękuję za tę odpowiedź. Problem polega na tym, że zawsze muszę polegać na trzeciej firmie, założyć specjalnie do tego konto, a usługa ta może zostać zakłócona lub warunki usługi mogą ulec zmianie. Jeśli to możliwe, chciałbym tego uniknąć. Nie wiedziałem jednak, że Skype może negocjować bezpośrednie połączenie. Nadal z Twojej odpowiedzi mogę wywnioskować, że nie zawsze tak jest?
Benoit,
@Benoit - Nigdy nie miałem skype'a, który nie mógł wysłać pliku. Jedyny ruch, który trafia do serwerów skype, to konfiguracja połączenia. Wszystkie dane są przesyłane między tobą a odbiorcą. Jeśli chodzi o warunki usługi, które są bardzo nieładne, ponieważ udostępnianie plików jest centralną częścią Skype.
Nifle
@Benoit Skype zawsze korzysta z bezpośrednich połączeń; nawet baza użytkowników Skype jest rozpowszechniana. Korzyścią dla Skype jest jego kompleksowe szyfrowanie; Skype nie widzi przesyłanych danych. (+1 btw)
squircle
5

Jeśli działający system Linux / unix ssh jest bezpiecznym sposobem przesyłania plików w modelu serwera klienta. port wymaga przekazywania na połączeniach przychodzących, jeśli jest za NAT.

0x7c0
źródło
3

FTP. Jest już od wieków. To niepewne, jak do cholery. I to jest proste.

Pobierz Filezilla, która może działać zarówno jako serwer, jak i klient. Upewnij się, że zapora sieciowa jest skonfigurowana tak, aby zezwalała na wychodzenie. Poproś docelową aplikację filezilla i połącz się z serwerem filezilla. Prześlij plik.

Tak po prostu, wszystkie twoje kawałki są rzucane przez Internet, aby wszyscy widzieli jak tyle prania przewiewanego na wietrze na podwórku.

music2myear
źródło
Nie jest też tak niezawodny. Potrzebujesz sprawdzania wartości skrótu, aby upewnić się, że otrzymałeś dokładnie to, co wysłałeś. TCP / IP udaje, że jest niezawodny, ale na koniec nie jest w 100%. Na przykład po prostu próbowałem wysłać kilka gigabajtowych kopii zapasowych i okazało się, że skompresowany plik zip zawiera błędy w celu, ale nie w źródle. Nie pokazano błędów. Hashe na ogół są dobre, ale nadal mogą dać ci fałszywe ok. Kilka skrótów każdy w 1 MB punktów jest lepsze. Więc torrent między dwoma komputerami byłby lepszy dla dużego pliku.
rxantos
FTP ma problemy z naprawdę, bardzo dużymi plikami (tak naprawdę nigdy nie rozważał użycia plików tak dużych, jak dzisiaj, kiedy był rozwijany). SFTP jest znacznie lepiej wyposażonym protokołem dla większych plików, a także jest znacznie, znacznie bezpieczniejszy niż FTP.
MaQleod
3

Kiedyś napisałem post na blogu o przesyłaniu plików za pomocą wbudowanego serwera HTTP Pythona . Krótko mówiąc, zainstaluj Python, otwórz wiersz polecenia cddo katalogu z plikami do udostępnienia i wykonania python -m SimpleHTTPServer. Jest to bardzo wygodne, jeśli korzystasz z systemu Linux lub OS X, ponieważ Python jest instalowany domyślnie (łatwy w instalacji również w systemie Windows).

Jeśli jesteś za NAT, musisz skonfigurować przekierowanie portów na routerze lub coś takiego (co zakładam, że już znasz).

phunehehe
źródło
1
Link „post na blogu” prowadzi do strony ze spamem
MFB
@MFB Domyślam się, że kiedyś przechodził do jego legalnej witryny, ale od tego czasu stracił kontrolę nad witryną, a teraz przekierowuje na stronę typu zaparkowanej domeny. Na razie edytowałem link. Jeśli chcesz to zobaczyć, prosimy o komentarz dotyczący linku. Jeśli masz kopię wpisu na blogu w innym miejscu, możesz ją teraz edytować, ale uwaga, że ​​celowe łączenie ze spamem nie będzie tolerowane.
nhinkle
w końcu odzyskałem post na blogu, zaktualizowałem :)
phunehehe,
2

Działałby serwer WWW, który może wykonywać translację UPnP NAT , odbiornik potrzebowałby tylko przeglądarki internetowej. Ponieważ szyfrowanie premiowe jest łatwe w przypadku serwera WWW, wystarczy użyć https.

Oto jeden przykład (payware 99USD) RaidenHTTPD

Nifle
źródło
2

Bit Torrent Sync synchronizuje foldery w Internecie. Pliki są również szyfrowane. Sprawdź to.

http://www.bittorrent.com/sync

peter42y
źródło
1

Powinieneś sprawdzić http://filesovermiles.com Wygląda na to, że robi dokładnie to, co chcesz. Bezpośredni transfer P2P przez przeglądarkę (flash).

Trevor
źródło
3
Jakie są zalety proponowanego rozwiązania?
Johan Karlsson,
1

Możesz wypróbować Transfer folderów ze strony http://www.foldertransfer.com , który może bezpośrednio przesyłać pliki między dwoma komputerami w Internecie. Może w pełni zaspokoić twoje potrzeby.

użytkownik290488
źródło
1

Dlaczego nikt nie wspomina o transferze IRC DCC? https://en.wikipedia.org/wiki/Direct_Client-to-Client , dostaniesz klienta HexChat, zainstaluj go na obu komputerach, wpisz powiedzmy Freenode, a następnie utwórz kanał dla obu, aby się przyłączyć, a następnie kliknij prawym przyciskiem myszy inny „kontakt / komputer” i wyślij plik. Stara technologia, która zawsze działa, oprócz Hyperterminal do bezpośredniego połączenia dial-up, około 1995-1998, DCC był głównym sposobem pobierania muzyki i filmów.

Zachariasz
źródło
1

Można do tego użyć Magic Wormhole. W systemie Ubuntu można zainstalować za pomocą apt-get (jest również dostępny przez pip Python):

sudo apt install magic-wormhole

Aby wysłać plik, po prostu powiedz, co wysłać

wormhole send README.md

Spowoduje to wyświetlenie wiersza polecenia, który należy uruchomić na końcu odbierającym. Obejmuje to tajny klucz (taki, że można go również odczytać przez telefon). Nie podajesz żadnych nazw komputerów ani adresów IP. Wormhole ustanawia połączenie automatycznie i szyfruje pliki do przesłania.

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

Juha Palomäki
źródło