Trasferimento diretto di un file tra due computer su Internet


26

Sto cercando un modo semplice ma diretto per trasferire un file di qualsiasi tipo e dimensione tra due persone. Se possibile, avendo solo un browser Web, senza avere il file archiviato su una terza macchina nel frattempo.

Vorrei farlo senza richiedere agli utenti finali di connettersi a un terzo server, perché in questo modo i dati scorreranno attraverso la macchina xyz.com, probabilmente rallentando il trasferimento e comportando rischi per la sicurezza.

Vorrei evitare di configurare un intero server FTP solo per trasferimenti di file occasionali. Finora ho scoperto JetBytes , Click2Copy e PipeBytes . Tali servizi web dovrebbero facilitare il trasferimento. Tuttavia, il traffico passa attraverso i loro server, quindi non vanno bene per quello che voglio.

Voglio che il trasferimento sia diretto tra il cliente e me. La crittografia sarebbe una bella caratteristica aggiuntiva.

So che così facendo devo aprire una porta sul mio computer e configurare un reindirizzamento delle porte bit sul mio router. Tuttavia, anche l'attraversamento NAT sarebbe una buona aggiunta.

La mia domanda è:

Esiste un modo semplice per un singolo trasferimento diretto di file end-to-end tra due computer, evitando terze parti? (se possibile, con crittografia e attraversamento NAT)


stai cercando una soluzione che trasferisca solo tramite HTTP o cosa?
Pacerier,

Personalmente utilizzo un server Web con chroot con autoindex attivato per condividere file con altre persone. Quindi ho un account anonimo ftp imprigionato che le persone possono utilizzare per inviare file direttamente a me. La soluzione Skype è qualcosa che direi a mia madre se voleva condividere un file con qualcuno. È meglio che usare almeno gli allegati di posta elettronica.
Isuldor

1
magari programma di trasferimento file diretto sourceforge.net/projects/file-transfer - open source, drag and drop, promesse opzionali upnp (su xp?), teredo, connessioni sicure e rilevamento automatico, (roba opzionale ha bisogno di
segni di spunta

Possiamo riaprirlo? Ho riformulato questo per attuare i suggerimenti
n611x007,

Risposte:


12

Il modo più sporco se si utilizza * nix consiste nell'utilizzare netcat ( nc) per collegare il file all'host remoto. Ma se si desidera la crittografia, è possibile utilizzare SCP / SSH.

È necessario rendersi conto che se una delle parti si trova dietro un NAT e non si desidera impostare il port forwarding, è impossibile stabilire una connessione diretta senza prima collegarsi a un server di terze parti. Il server non deve necessariamente inoltrare il traffico (vedi http://en.wikipedia.org/wiki/UDP_hole_punching ) e la maggior parte di loro non lo fa poiché la larghezza di banda è costosa.

Ad esempio, Skype proverà a utilizzare molti metodi di attraversamento NAT per stabilire una connessione diretta prima di ricorrere al trasferimento di traffico attraverso i loro super nodi. (Skype è una rete molto P2P.)

Per quanto riguarda il problema dell'account. Immagino sia inevitabile. Tutti i metodi richiederanno un qualche tipo di configurazione o installazione che di solito sono più difficili della registrazione di un account.


3
cryptcat è netcat con crittografia
Journeyman Geek

netcat è disponibile anche per Windows. Mi piace così
Benoit,

Per riferimento, Skype non utilizza più P2P: support.skype.com/en/faq/FA12381/what-is-the-cloud
Radderz

10

Le soluzioni basate su WebRTC offrono ciò di cui hai bisogno, forse nella forma più semplice. Ti connetti a un sito Web di terze parti, ma è solo per connettere i peer e non la parte di trasferimento file.

Servizi di esempio:
https://www.justbeamit.com/
https://www.sharedrop.io/

EDIT: capisco che questo non soddisfa tutti i requisiti dell'OP ma esiste un'altra soluzione molto utilizzabile: Firefox Send . Usando questo, carichi il tuo file su un server di terze parti in una forma crittografata. Il servizio ti fornisce un URL, che puoi condividere con altri. L'URL contiene anche la chiave per decrittografare il file. Possono quindi scaricare il file. Il file viene automaticamente eliminato dopo un determinato numero di download o dopo 24 ore. Il server non vede mai la chiave e quindi non può decrittografare il file. Il vantaggio nell'uso di un server di terze parti è che la parte di condivisione e la parte di download non devono essere online contemporaneamente.


Sulla mia rete aziendale (altamente protetta), reep.io non ha funzionato, ma justbeamit.com ha funzionato! Mi sarei aspettato che entrambi i servizi funzionassero allo stesso modo poiché sono entrambi basati sulla tecnologia WebRTC, ma sembra che sia un po 'più complicato di così. Grazie mille per il suggerimento!
Gaborous,

8

È possibile sincronizzare i file tra computer remoti utilizzando un rsync. Questa utility è disponibile per Windows in Cygwin oppure è possibile installarla con cwRsync preconfezionato .

Lascio la mia risposta precedente qui intatta, ma date le recenti rivelazioni sulla NSA, non consiglierei più Skype per trasferimenti di file sicuri.

Puoi inviare un file direttamente a un'altra persona utilizzando Skype . Skype a volte funziona anche quando entrambi gli utenti sono dietro NAT. Se sei abbastanza sicuro da aprire una porta sul tuo router, aumentando la probabilità di negoziare una connessione diretta.

Più in generale, molti programmi di chat includono un meccanismo di condivisione / invio file. La maggior parte non fornisce la crittografia per impostazione predefinita come Skype. Ma finché tu e il tuo destinatario avete lo stesso client di chat, avete uno "strumento semplice" per condividere file.


Grazie per questa risposta Il problema qui è che devo sempre fare affidamento su una terza società, creare un account appositamente per quello, e quel servizio potrebbe interrompere o i termini del servizio potrebbero cambiare. Se possibile, vorrei evitarlo. Tuttavia non sapevo che Skype potesse negoziare una connessione diretta. Ancora dalla tua risposta posso dedurre che non è sempre così?
Benoit,

@Benoit - Non ho mai avuto skype non riuscire a inviare un file. L'unico traffico che va ai server skype è quello di impostare la connessione. Tutti i dati vanno tra te e il tuo destinatario. Per quanto riguarda i termini di servizio che sono molto poco chiari in quanto la condivisione dei file è una parte centrale di skype.
Nifle,

@Benoit Skype utilizza sempre connessioni dirette; anche il database degli utenti di Skype è distribuito. Il vantaggio di Skype è la sua crittografia end-to-end; Skype non può vedere i dati che stai trasmettendo. (+1 btw)
squircle

5

Se si esegue Linux / unix ssh è un modo sicuro per trasmettere file in un modello di server client. port forward necessari su connessioni in entrata se dietro NAT però.


3

FTP. È in circolazione da secoli. È insicuro come diamine. Ed è semplice.

Scarica Filezilla, che può funzionare sia come server che come client. Assicurati che il tuo firewall sia impostato per consentirlo in uscita. Chiedi a destinazione di scaricare filezilla e connettersi al server filezilla. Trasferisci file.

Proprio così, tutti i tuoi pezzi vengono lanciati su Internet per essere visti come tanta biancheria che gira nella brezza nel cortile.


Inoltre non è così affidabile. Hai bisogno di controlli hash per assicurarti che quello che hai è esattamente quello che hai inviato. TCP / IP finge di essere affidabile ma alla fine non è al 100%. Ad esempio Ho appena provato a inviare un backup di diversi byte giga e ho scoperto che lo zip che ho creato ha degli errori sulla destinazione, ma non sull'origine. Nessun errore mostrato. Gli hash nel complesso sono buoni, ma possono comunque darti un falso ok. Diversi hash ciascuno a 1 mb punti ciascuno sono migliori. Quindi il torrent tra i due computer sarebbe meglio per un file di grandi dimensioni.
rxantos,

L'FTP ha difficoltà con file molto, molto grandi (non ha mai considerato l'uso di file così grandi come lo abbiamo oggi quando è stato sviluppato). SFTP è un protocollo molto meglio equipaggiato per file più grandi ed è anche molto, molto più sicuro di FTP.
MaQleod

3

Una volta ho scritto un post sul blog sul trasferimento di file con il server HTTP integrato di Python . In breve, installa Python, apri un prompt dei comandi, cdnella directory con i file da condividere ed eseguire python -m SimpleHTTPServer. Molto comodo se sei su Linux o OS X perché Python è installato di default (è facile da installare anche su Windows).

Se sei dietro un NAT, allora devi impostare il port forwarding sul tuo router o qualcosa del genere (che presumo tu sappia già).


1
Il link "post sul blog" va a un sito di spam
MFB

@MFB Immagino che un tempo andasse sul suo sito Web legittimo, ma da allora ha perso il controllo del sito e ora reindirizza a una pagina di tipo di dominio parcheggiato. Ho modificato il link per ora. Per phunehehe, se vedi questo, ti preghiamo di commentare il link. Se hai una copia del post del blog da qualche altra parte ora puoi modificarlo, ma fai attenzione che il collegamento intenzionale allo spam non sarà tollerato.
Pensa

finalmente ho recuperato il post sul blog, aggiornato :)
phunehehe

2

Un server web che può eseguire l' attraversamento NAT UPnP funzionerebbe, il ricevitore avrebbe bisogno solo di un browser web. Poiché una crittografia bonus è semplice con un server Web, basta usare https.

Ecco un esempio (payware 99USD) RaidenHTTPD





1

Perché nessuno parla del trasferimento DCC IRC? https://en.wikipedia.org/wiki/Direct_Client-to-Client , ottieni il client HexChat, installalo su entrambi i computer, entri diciamo Freenode e quindi crea un canale per entrambi per unirti, quindi fai clic destro sul altro "contatto / PC" e invia file. Vecchia tecnologia che funziona sempre, a parte Hyperterminal per la connessione diretta dial-up, circa 1995-1998, DCC era il modo tradizionale per scaricare musica e film.


1

Magic Wormhole può essere utilizzato per questo. Su Ubuntu puoi installarlo tramite apt-get (è disponibile anche tramite pip Python):

sudo apt install magic-wormhole

Per inviare un file devi semplicemente dire cosa inviare

wormhole send README.md

Questo genererà la riga di comando che dovresti eseguire sul lato ricevente. Ciò include una chiave segreta (che è tale da poterla leggere anche al telefono). Non si specificano nomi di macchine o indirizzi IP. Wormhole stabilisce automaticamente la connessione e crittografa i file da trasferire.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.