Transferência direta de um arquivo entre dois computadores na Internet

27

Estou procurando uma maneira simples, mas direta , de transferir um arquivo de qualquer tipo e tamanho entre duas pessoas. Se possível, ter apenas um navegador da Web, sem ter o arquivo armazenado em uma terceira máquina enquanto isso.

Desejo fazê-lo sem exigir que os usuários finais se conectem a um terceiro servidor, pois assim os dados fluirão pela máquina xyz.com, possivelmente diminuindo a velocidade da transferência e apresentando riscos à segurança.

Gostaria de evitar a configuração de um servidor FTP inteiro apenas para transferências ocasionais de arquivos. Até agora eu descobri o JetBytes , Click2Copy e PipeBytes . Esses serviços da web devem facilitar a transferência. No entanto, o tráfego passa por seus servidores para que eles não sejam bons para o que eu quero.

Quero que a transferência seja direta entre o cliente e eu. A criptografia seria um recurso adicional interessante.

Sei que, para isso, tenho que abrir uma porta no meu computador e configurar um pouco de redirecionamento de porta no meu roteador. No entanto, a travessia de NAT também seria uma boa adição.

Minha pergunta é:

Existe uma maneira simples de uma única transferência direta de ponta a ponta entre dois computadores, evitando terceiros? (se possível, com criptografia e passagem NAT)

Benoit
fonte
você está procurando uma solução que transfira apenas por HTTP ou o quê?
Pacerier 29/07
Pessoalmente, uso um servidor da Web preso com chroot com a indexação automática ativada para compartilhar arquivos com outras pessoas. Então, tenho uma conta anônima de ftp na cadeia que as pessoas podem usar para enviar arquivos diretamente para mim. A solução do Skype é algo que eu diria a minha mãe se ela quisesse compartilhar um arquivo com alguém. É melhor do que usar anexos de email pelo menos.
Isuldor
1
talvez programa de transferência direta de arquivos sourceforge.net/projects/file-transfer - código aberto, arraste e solte, prometa opcionalmente upnp (no xp?), teredo, conexões seguras e descoberta automática (o material opcional precisa de marcações na página de configurações )
n611x007
Podemos reabrir isso? I reformulou este para implementar as sugestões
n611x007

Respostas:

13

A maneira mais suja se você usar * nix é usar o netcat ( nc) para colocar o arquivo no host remoto. Mas se você quiser criptografia, use o SCP / SSH.

Você deve perceber que, se uma das partes estiver atrás de um NAT e não desejar configurar o encaminhamento de porta, será impossível estabelecer uma conexão direta sem antes conectar-se a um servidor de terceiros. O servidor não precisa necessariamente retransmitir o tráfego (consulte http://en.wikipedia.org/wiki/UDP_hole_punching ) e a maioria deles não é tão cara quanto a largura de banda.

Por exemplo, o Skype tentará usar muitos métodos transversais de NAT para estabelecer uma conexão direta antes de voltar a retransmitir o tráfego através de seus supernós. (O Skype é uma rede muito P2P.)

Quanto ao problema da conta. Eu acho que é inevitável. Todos os métodos exigirão algum tipo de configuração que geralmente é mais difícil do que registrar uma conta.

billc.cn
fonte
3
cryptcat é netcat com criptografia
Journeyman Geek
O netcat também está disponível para Windows. Eu gosto desse jeito.
Benoit
Para referência, o Skype não usa mais o P2P: support.skype.com/en/faq/FA12381/what-is-the-cloud
Radderz
10

As soluções baseadas no WebRTC oferecem o que você precisa, talvez da forma mais simples. Você se conecta a um site de terceiros, mas isso é apenas para conectar os pares e não a parte da transferência de arquivos.

Serviços de exemplo:
https://www.justbeamit.com/
https://www.sharedrop.io/

EDIT: Entendo que isso não atende a todos os requisitos do OP, mas há outra solução muito útil: o Firefox Send . Com isso, você carrega seu arquivo em um servidor de terceiros em um formato criptografado. O serviço fornece um URL, que você pode compartilhar com outras pessoas. O URL também contém a chave para descriptografar o arquivo. Eles podem fazer o download do arquivo. O arquivo é excluído automaticamente após um número definido de downloads ou após 24 horas. O servidor nunca vê a chave e, portanto, não pode descriptografar o arquivo. A vantagem de usar um servidor de terceiros é que a parte de compartilhamento e a parte de download não precisam estar online simultaneamente.

rv
fonte
Na minha rede corporativa (altamente segura), o reep.io não funcionou, mas justbeamit.com funcionou! Eu esperava que ambos os serviços funcionassem da mesma forma, pois ambos são baseados na tecnologia WebRTC, mas parece que é um pouco mais complicado que isso. Muito obrigado pela dica!
gaborous 28/05
8

Você pode sincronizar arquivos entre computadores remotos usando um rsync. Este utilitário está disponível para Windows no cygwin , ou você pode instalá-lo com o cwRsync pré-empacotado .

Deixarei intacta minha resposta anterior, mas, dadas as recentes revelações sobre a NSA, não recomendaria mais o Skype para transferências seguras de arquivos.

Você pode enviar um arquivo diretamente para outra pessoa usando o Skype . Às vezes, o Skype até funciona quando os dois usuários estão atrás do NAT. Se você estiver seguro o suficiente para abrir uma porta no seu roteador, isso aumentará a probabilidade de uma conexão direta negociar.

De maneira mais ampla, muitos programas de bate-papo incluem um mecanismo de compartilhamento / envio de arquivos. A maioria não fornece criptografia por padrão, como o Skype. Mas enquanto você e seu destinatário tiverem o mesmo cliente de bate-papo, você terá uma "ferramenta simples" para compartilhar arquivos.

isuldor
fonte
Obrigado por esta resposta. O problema aqui é que eu sempre tenho que confiar em uma terceira empresa, criar uma conta especificamente para isso e esse serviço pode atrapalhar ou os termos de serviço podem mudar. Se possível, eu gostaria de evitar isso. No entanto, eu não sabia que o Skype pode negociar uma conexão direta. Ainda da sua resposta, posso deduzir que esse nem sempre é o caso?
Benoit
@Benoit - Eu nunca tive o skype para não conseguir enviar um arquivo. O único tráfego que vai para os servidores do skype é o de configurar a conexão. Todos os dados vão entre você e seu destinatário. Quanto aos termos de serviço que são muito pouco claros, o compartilhamento de arquivos é uma parte central do skype.
Nifle
O @Benoit Skype sempre usa conexões diretas; até o banco de dados de usuários do Skype é distribuído. O benefício para o Skype é sua criptografia de ponta a ponta; O Skype não consegue ver os dados que você está transmitindo. (+1 btw)
squircle
5

Se o seu Linux / unix ssh em execução for uma maneira segura de transmitir arquivos em um modelo de servidor cliente. encaminhamento de porta necessário nas conexões de entrada, se estiver atrás do NAT.

0x7c0
fonte
3

FTP. Já existe há séculos. É inseguro como o diabo. E é simples.

Baixe o Filezilla, que pode funcionar como servidor e cliente. Verifique se o seu firewall está configurado para permitir a saída. Faça com que o seu destino baixe o filezilla e conecte-se ao servidor do filezilla. Transferir arquivo.

Assim, todos os seus bits são lançados na Internet para que todos vejam tanta roupa sacudindo na brisa no quintal.

music2myear
fonte
Também não é tão confiável. Você precisa de verificações de hash para garantir que o que você recebeu é exatamente o que você enviou. O TCP / IP finge ser confiável, mas no final do dia não é 100%. Por exemplo, tentei enviar vários backups de giga byte e constatei que o zip que eu cometi tem erros no destino, mas não na origem. Nenhum erro mostrado. Hashes para o todo são bons, mas ainda podem lhe dar uma falsa aprovação. Vários hashes cada um com 1 mb de pontos são melhores. Portanto, o torrent entre os dois computadores seria melhor para um arquivo grande.
Rdantos
O FTP tem dificuldade com arquivos muito, muito grandes (ele nunca considerou o uso de arquivos tão grande como temos hoje quando foi desenvolvido). O SFTP é um protocolo muito melhor equipado para arquivos maiores e também é muito, muito mais seguro que o FTP.
MaQleod 16/02
3

Certa vez, escrevi uma postagem no blog sobre a transferência de arquivos com o servidor HTTP interno do Python . Em resumo, instale o Python, abra um prompt de comando cdno diretório com arquivos para compartilhar e executar python -m SimpleHTTPServer. Muito conveniente se você estiver no Linux ou OS X porque o Python é instalado por padrão (é fácil de instalar no Windows também).

Se você está atrás de um NAT, precisa configurar o encaminhamento de porta no seu roteador ou algo assim (o que suponho que você já saiba).

phunehehe
fonte
1
o link 'postagem do blog' vai para um site de spam
MFB 25/05
@MFB Acho que costumava ir ao site legítimo dele, mas ele perdeu o controle do site e agora é redirecionado para uma página do tipo de domínio estacionado. Editei o link por enquanto. Para saber mais, se você vir isso, comente o link. Se você tiver uma cópia da postagem do blog em outro lugar agora, poderá editá-la, mas lembre-se de que a vinculação intencional a spam não será tolerada.
Nhinkle
, finalmente eu ter recuperado o post do blog, atualizados :)
phunehehe
2

Um servidor da web que pode fazer a travessia do UPnP NAT funcionaria, o receptor precisaria apenas de um navegador da web. Como uma criptografia de bônus é fácil com um servidor da Web, basta usar https.

Aqui está um exemplo (payware 99USD) RaidenHTTPD

Nifle
fonte
2

A sincronização bit torrent sincroniza pastas pela web. Os arquivos também são criptografados. Confira.

http://www.bittorrent.com/sync

peter42y
fonte
1

Você deve verificar http://filesovermiles.com Parece fazer exatamente o que você deseja. Transferência P2P direta via navegador (flash).

Trevor
fonte
3
Quais são os benefícios da solução que você sugere?
9788 Johan
1

Você pode experimentar a Transferência de pastas em http://www.foldertransfer.com , que pode direcionar a transferência de um arquivo entre dois computadores na Internet. Ele pode atender plenamente às suas necessidades.

user290488
fonte
1

Por que ninguém está mencionando a transferência de IRC DCC? https://en.wikipedia.org/wiki/Direct_Client-to-Client , você obtém o cliente HexChat, instala nos dois computadores, entra digamos Freenode e cria um canal para os dois se associarem, e clique com o botão direito do mouse no outro "contato / PC" e envie o arquivo. Tecnologia antiga que sempre funciona, além do Hyperterminal para conexão direta discada, entre 1995 e 1998, o DCC era a principal maneira de baixar músicas e filmes.

Zacharias
fonte
1

Buraco de minhoca mágico pode ser usado para isso. No Ubuntu você pode instalar via apt-get (também está disponível via Python pip):

sudo apt install magic-wormhole

Para enviar um arquivo, basta dizer o que enviar

wormhole send README.md

Isso produzirá a linha de comando que você deve executar no lado de recebimento. Isso inclui uma chave secreta (que permite ler também por telefone). Você não especifica nenhum nome de máquina ou endereço IP. O Wormhole estabelece a conexão automaticamente e criptografa os arquivos a serem transferidos.

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

Juha Palomäki
fonte