This is exactly the use case for Magic Wormhole, which is what the cool kids use to transfer files:
https://github.com/magic-wormhole/magic-wormhole
Magic Wormhole uses an end-to-end PAKE to create an encrypted transport between two points in the Internet, using a rendezvous server.
It doesn't store files, which is almost never what you want; it's not a way to send a file and have 10 or 100 people download it. But it's probably the best way to get a file through a bunch of arbitrary network controls, NATs, &c to a desired destination. There's a Go implementation as well:
https://github.com/psanford/wormhole-william
... which is what I use most of the time. If you haven't played with it, I highly recommend it.
This and croc.
Link: https://github.com/schollz/croc