Show HN: An SSH based utility to transfer pipes across machines – beam (github.com)
Hey HN,
At work, I was annoyed about having to download logs by writing them out to files and transferring them over to my local over HTTP (admittedly, this is because of a rather novel architectural situation).
So, I built a tool in Go that lets you pipe contents into an SSH server for sending and reading them out on another connection. You can also use this tool to transfer files. Just cat the file on the sender end and redirect the output of the receiver end to a file.
Please note that the transfer rate is heavily dependent on your connection and proximity to the public ssh.beam.camp host. This is because there is no simple way to auto connect to the closest host using a regular SSH client.
Hope you find beam useful. Have a nice weekend.
31 comments
[ 2.8 ms ] story [ 72.4 ms ] threadExample:
Given the current readme, I was left wondering the same as the GP too.
I mean, I'm not bashing beam, but it's mostly syntactic sugar, not something that provides some actual new functionality, is that right?
You can do this using a regular SSH server and some elbow grease. This is meant to be a simple setup and forget system that is relatively locked down and doesn't expose any more functionality than strictly necessary.
On Receiving Server
And then on sending server> Beam cannot support end-to-end encrypted buffers. While data is encrypted during transfer to and from the Beam host, it’s decrypted temporarily before being re-encrypted and forwarded. The host only holds a small buffer (typically 1 kB) of unencrypted data at any time and never stores the full stream. For extra security, you can encrypt your files or pipes before sending them through Beam.
With a little effort, beam is as trustable as any (if not more) of its alternatives. And, that extra effort is a result of the design goal of not having to force a binary installation.
Plus, you can always self host beam, it's not that complicated.
New meaning of the word isolated
More confused than anything else…
Disadvantage: remote1 must be able to connect to remote2. In this (ssh.beam.camp) software, remote2 can be in a place where accepting incoming connections is not possible.
This thing is "already there" and it takes two commands. I like it a lot, tbh.
Using the public key to match streams on both ends is super clever. I will start using this since it fills a need I have almost every day. I work with many small AWS instances and sometimes I just need to copy a small file or something to them without having to install a whole new OS like some short sighted people here are suggesting.
You also shipped your product, which is something only ~1% of developers actually do, so congrats.
Forget about the naysayers and thank you for creating this, it will make my work easier :).
Edit: Downvote me all you want, I still like this thing.