Direct transfer of a file between two computers on the Internet

WebRTC-based solutions give what you need, in perhaps the simplest form. You do connect to a third-party website but that is only for getting the peers connected and not the file transfer part.

Example services:
https://www.justbeamit.com/
https://www.sharedrop.io/

EDIT: I understand this does not meet all the requirements of the OP but there is another, very usable solution: Firefox Send. Using this, you upload your file to a third-party server in an encrypted form. The service gives you a URL, which you can share with others. The URL also contains the key to decrypt the file. They can then download the file. The file is automatically deleted after a set number of downloads or after 24 hours. The server never sees the key and so cannot decrypt the file. The advantage in using a third-party server is that the sharing party and the downloading party do not need to be online simultaneously.


The dirtiest way if you use *nix is to use netcat (nc) to cat the file to the remote host. But if you want encryption, you might as well use SCP/SSH.

You have to realize that if either party is behind a NAT and you don't want to setup port forwarding, then it's impossible to make a direct connection without connecting to a third-party server first. The server does not necessarily have to relay the traffic (see http://en.wikipedia.org/wiki/UDP_hole_punching) and most of them don't as bandwidth is costly.

For example, Skype will try to use many NAT traversal methods to establish a direct connection before falling back to relaying traffic through their super nodes. (Skype is a very P2P network.)

As for the account problem. I guess it's unavoidable. All methods will require some kind of configuration or setup which are usually harder than registering an account.


You can sync files between remote computers using a rsync. This utility is available for Windows in cygwin, or you can install it with the pre-packaged cwRsync.

I'll leave my previous answer here intact, but given recent revelations about the NSA, I would no longer recommend Skype for secure file transfers.

You can send a file directly to another person using Skype. Skype sometimes even works when both users are behind NAT. If you are saavy enough to open a port on your router, doing so will increase the likelihood of a negotiating a direct connection.

More broadly, many chat programs include a file sharing/sending mechanism. Most don't supply encryption by default like Skype. But as long as you and your recipient have the same chat client, you have a "simple tool" for sharing files.