Transferencia directa de un archivo entre dos computadoras en Internet


27

Estoy buscando una forma simple pero directa de transferir un archivo de cualquier tipo y tamaño entre dos personas. Si es posible, tener solo un navegador web, sin tener el archivo almacenado en una tercera máquina mientras tanto.

Deseo hacerlo sin requerir que los usuarios finales se conecten a un tercer servidor, porque de esa manera los datos fluirán a través de la máquina xyz.com, posiblemente ralentizando la transferencia y presentando riesgos de seguridad.

Me gustaría evitar configurar un servidor FTP completo solo para transferencias de archivos ocasionales. Hasta ahora he descubierto JetBytes , Click2Copy y PipeBytes . Esos servicios web deberían facilitar la transferencia. Sin embargo, el tráfico pasa a través de sus servidores, por lo que no son buenos para lo que quiero.

Quiero que la transferencia sea directa entre el cliente y yo. El cifrado sería una buena característica adicional.

Sé que al hacerlo tengo que abrir un puerto en mi computadora y configurar una redirección de puerto de bits en mi enrutador. Sin embargo, el recorrido NAT también sería una buena adición.

Mi pregunta es:

¿Hay una manera simple para una sola transferencia directa de archivos de extremo a extremo entre dos computadoras, evitando a terceros? (si es posible, con encriptación y transversal NAT)


¿Está buscando una solución que transfiera solo a través de HTTP o qué?
Pacerier

Personalmente, uso un servidor web chroot encarcelado con autoindexado activado para compartir archivos con otras personas. Luego tengo una cuenta anónima ftp encarcelada que la gente puede usar para enviarme archivos directamente. La solución de Skype es algo que le diría a mi madre si quisiera compartir un archivo con alguien. Es mejor que usar archivos adjuntos de correo electrónico al menos.
isuldor

1
quizás el programa de transferencia directa de archivos sourceforge.net/projects/file-transfer - código abierto, arrastrar y soltar, promete opcionalmente upnp (en xp?), teredo, conexiones seguras y descubrimiento automático, (las cosas opcionales necesitan ticks en la página de configuración )
n611x007

¿Podemos reabrir esto? Reescribí esto para implementar las sugerencias
n611x007

Respuestas:


13

La forma más sucia si usa * nix es usar netcat ( nc) para conectar el archivo al host remoto. Pero si desea cifrar, también podría usar SCP / SSH.

Tiene que darse cuenta de que si alguna de las partes está detrás de un NAT y no desea configurar el reenvío de puertos, entonces es imposible hacer una conexión directa sin conectarse primero a un servidor de terceros. El servidor no necesariamente tiene que retransmitir el tráfico (consulte http://en.wikipedia.org/wiki/UDP_hole_punching ) y la mayoría de ellos no lo hace, ya que el ancho de banda es costoso.

Por ejemplo, Skype intentará usar muchos métodos de recorrido NAT para establecer una conexión directa antes de recurrir a la retransmisión de tráfico a través de sus supernodos. (Skype es una red muy P2P).

En cuanto al problema de la cuenta. Supongo que es inevitable. Todos los métodos requerirán algún tipo de configuración o configuración que generalmente es más difícil que registrar una cuenta.


3
cryptcat es netcat con cifrado
Journeyman Geek

netcat también está disponible para Windows. Me gusta de esta manera.
Benoit

Para referencia, Skype ya no usa P2P: support.skype.com/en/faq/FA12381/what-is-the-cloud
Radderz

10

Las soluciones basadas en WebRTC le dan lo que necesita, quizás en la forma más simple. Usted se conecta a un sitio web de terceros, pero eso es solo para conectar a los pares y no a la parte de transferencia de archivos.

Servicios de ejemplo:
https://www.justbeamit.com/
https://www.sharedrop.io/

EDITAR: entiendo que esto no cumple con todos los requisitos del OP, pero hay otra solución muy útil: Firefox Send . Con esto, carga su archivo a un servidor de terceros en forma cifrada. El servicio le proporciona una URL, que puede compartir con otros. La URL también contiene la clave para descifrar el archivo. Luego pueden descargar el archivo. El archivo se elimina automáticamente después de un número determinado de descargas o después de 24 horas. El servidor nunca ve la clave y, por lo tanto, no puede descifrar el archivo. La ventaja de utilizar un servidor de terceros es que la parte que comparte y la parte que descarga no necesitan estar en línea simultáneamente.


En mi red corporativa (altamente segura), reep.io no funcionó, ¡pero justbeamit.com sí! Hubiera esperado que ambos servicios funcionen de la misma manera, ya que ambos están basados ​​en la tecnología WebRTC, pero parece que es un poco más complicado que eso. Muchas gracias por la pista!
Gaborous

8

Puede sincronizar archivos entre computadoras remotas usando un rsync. Esta utilidad está disponible para Windows en cygwin , o puede instalarla con el cwRsync preempaquetado .

Dejaré mi respuesta anterior aquí intacta, pero dadas las recientes revelaciones sobre la NSA, ya no recomendaría Skype para transferencias de archivos seguras.

Puede enviar un archivo directamente a otra persona usando Skype . Skype a veces incluso funciona cuando ambos usuarios están detrás de NAT. Si tiene la habilidad suficiente para abrir un puerto en su enrutador, hacerlo aumentará la probabilidad de negociar una conexión directa.

En términos más generales, muchos programas de chat incluyen un mecanismo para compartir / enviar archivos. La mayoría no proporciona cifrado por defecto como Skype. Pero mientras usted y su destinatario tengan el mismo cliente de chat, tienen una "herramienta simple" para compartir archivos.


Gracias por esta respuesta El problema aquí es que siempre tengo que confiar en una tercera compañía, crear una cuenta específicamente para eso, y ese servicio puede interrumpir o los términos del servicio pueden cambiar. Si es posible, me gustaría evitar eso. Sin embargo, no sabía que Skype puede negociar una conexión directa. ¿Todavía de su respuesta puedo inferir que este no es siempre el caso?
Benoit

@Benoit: nunca he tenido skype que no pueda enviar un archivo. El único tráfico que va a los servidores de Skype es el de configurar la conexión. Todos los datos van entre usted y su destinatario. En cuanto a los términos de servicio que son muy poco claros ya que el intercambio de archivos es una parte central de Skype.
Nifle

@Benoit Skype siempre usa conexiones directas; incluso se distribuye la base de datos de usuarios de Skype. El beneficio para Skype es su encriptación de extremo a extremo; Skype no puede ver los datos que estás transmitiendo. (+1 por cierto)
ardilla

5

Si ejecuta Linux / unix ssh es una forma segura de transmitir archivos en un modelo de servidor cliente. Sin embargo, se requieren puertos hacia adelante en las conexiones entrantes si están detrás de NAT.


3

FTP Ha existido por años. Es inseguro como diablos. Y es simple.

Descargue Filezilla, que puede funcionar como servidor y cliente. Asegúrese de que su firewall esté configurado para permitir que salga. Haga que su destino descargue Filezilla y conéctese a su servidor Filezilla. Transferir archivo.

Solo así, todos sus fragmentos se lanzan a través de Internet para que todos vean tanta ropa que se mueve en la brisa del patio trasero.


Tampoco es tan confiable. Necesita comprobaciones hash para asegurarse de que lo que recibió es exactamente lo que envió. TCP / IP pretende ser confiable pero al final del día no es 100%. Por ejemplo, acabo de intentar enviar una copia de seguridad de varios gigabytes y descubrí que el zip que hice tiene errores en el destino, pero no en la fuente. No se muestran errores. Los hashes en general son buenos, pero aún pueden darte una autorización falsa. Varios hashes cada uno en puntos de 1 mb cada uno son mejores. Entonces, el torrent entre las dos computadoras sería mejor para un archivo grande.
rxantos

FTP tiene dificultades con archivos realmente muy grandes (realmente nunca consideró el uso de archivos tan grandes como los que tenemos hoy cuando se desarrolló). SFTP es un protocolo mucho mejor equipado para archivos más grandes y también es mucho, mucho más seguro que FTP.
MaQleod

3

Una vez escribí una publicación de blog sobre la transferencia de archivos con el servidor HTTP incorporado de Python . En resumen, instale Python, abra un símbolo del sistema cden el directorio con archivos para compartir y ejecutar python -m SimpleHTTPServer. Muy conveniente si está en Linux u OS X porque Python está instalado de forma predeterminada (también es fácil de instalar en Windows).

Si está detrás de un NAT, entonces necesita configurar el reenvío de puertos en su enrutador o algo (lo que supongo que ya sabe).


1
el enlace 'blog post' va a un sitio de spam
MFB

@MFB Supongo que solía ir a su sitio web legítimo, pero desde entonces perdió el control del sitio y ahora lo redirige a una página de tipo de dominio estacionado. He editado el enlace por ahora. Para phunehehe, si ve esto, comente sobre el enlace. Si tiene una copia de la publicación del blog en otro lugar ahora puede editarla, pero tenga en cuenta que no se tolerará el enlace intencional al spam.
nhinkle

por fin he recuperado la publicación del blog, actualizado :)
phunehehe 05 de

2

Un servidor web que pueda hacer un recorrido NAT UPnP funcionaría, el receptor solo necesitaría un navegador web. Como un cifrado adicional es fácil con un servidor web, solo use https.

Aquí hay un ejemplo (payware 99USD) RaidenHTTPD





1

¿Por qué nadie menciona la transferencia IRC DCC? https://en.wikipedia.org/wiki/Direct_Client-to-Client , obtienes tu cliente HexChat, lo instalas en ambas computadoras, ingresas digamos Freenode y luego creas un canal para que ambos se unan, luego haz clic derecho en el otro "contacto / PC" y enviar archivo. Tecnología antigua que siempre funciona, aparte de Hyperterminal para conexión directa de marcado, alrededor de 1995-1998, DCC era la forma principal de descargar música y películas.


1

Magic Wormhole se puede usar para esto. En Ubuntu puede instalar a través de apt-get (también está disponible a través de Python pip):

sudo apt install magic-wormhole

Para enviar un archivo, simplemente diga qué enviar

wormhole send README.md

Esto generará la línea de comando que debe ejecutar en el extremo receptor. Esto incluye una clave secreta (que es tal que también puede leerla por teléfono). No especifica ningún nombre de máquina o dirección IP. Wormhole establece la conexión automáticamente y cifra los archivos a transferir.

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.