antoniomika
antoniomika on Hacker News
Was looking for something like this but stumbled upon herdr-web-ui [0] first. They seem to do the same thing, but herdr-web-ui is completely free and self hosted and sets up as a PWA with webpush support. Seems to work decently well and it’s under heavy development. Will have to try this too!
[0] https://github.com/devswha/herdr-web-ui
A number of years ago, I created a fully open source (MIT) project called sish [0] that does just this.
sish is a SSH server written specifically for tunneling. You get all of the benefits of SSH, but also automatic TLS, a web console of requests a tunnel has received, and various other features. You can also tunnel more than just HTTP(S). You can tunnel websockets, TCP connections, and even have internal alias connections for using ProxyJump within the tunnel. All stateless and all protected with SSH auth.
If you’re not interested in self hosting, there’s a hosted version at tuns.sh [1] that has multi region support and a few other cool features (including UDP tunneling) as part of the pico.sh [2] membership ($2/mo). Happy to answer any questions in this space!
[0] https://github.com/antoniomika/sish
[1] https://tuns.sh
[2] https://pico.sh
We added SSH certificates support to pico.sh [1] and it's been great. Utilizing principals gave us the ability to implement a RBAC like system for specific parts of the pico.sh ecosystem. Users get the flexibility they want with limited complexity.
[1] https://pico.sh/access-control#ssh-certificates
This has been replaced with a permissions feature that still provides both delete and overwrite protections. The difference is the underlying store needs to implement it rather than running a server that understands the permission differences. You can read more about this change here:
https://github.com/borgbackup/borg/issues/8823#issuecomment-...
We’re actually using Unix sockets as the underlying transport layer for this. We’re also not using sshd, we custom wrote our own daemon that’s entire job is tunneling. If you’re curious about this, you can find the project here:
https://github.com/antoniomika/sishsish was actually my first foray into SSH apps. It was a lot of fun to write and pretty much implements tunnels with a routing system on top. It manages connectivity, routing, and reverse proxying all within user space. No namespaces required!
tuns can actually even tunnel UDP traffic over SSH, also entirely in user space. Docs for that can be found here: https://pico.sh/tuns#udp-tunneling
We're actually fully open source and all development occurs in the open! Here's the repo
https://github.com/picosh/pico and you can find us on Libera IRC
Hrm that's odd! Just tested and everything looks fine. Any logs or errors you can share?
Ashburn, VA and Nuremberg, DE!
Woops! Delete is supported, will update that as well
Correct! The tunnels are protected using ssh auth as well, so you can ensure that only the users you want to access it can.
Sorry, this is a focus issue with a tui which we'll fix up soon! Should just need to hit <tab> until OK is highlighted and then press enter
We recently changed our tui framework and the functionality for focus is a bit different. You might have to hit <tab> until `ADD` is highlighted. You can also rsync/scp/sftp an authorized_keys file and we'll add that to your account!
And we're still free! Just added some payments to help keep things running smoothly and allow us to invest in more infrastructure. pgs (static sites) and tuns (tunneling) are both multi-region for example.
Posted by
antoniomika on Tuesday December 03, 2024 @10:08PM
from the termsky.app dept.
Honestly never had a chance to merge it/review it. Once the company wound down, I had to move onto other things (find a new job, work on other priorities, etc) and lost access to be able to do anything with it after. I thought about forking it and modernizing it but never came to fruition.
I wrote a system that did this >5 years ago (luckily was able to open source it before the startup went under[0]). The bastion would record ssh sessions in asciicast v2 format and store those for later playback directly from a control panel. The main issue that still isn't solved by a solution like this is user management on the remote (ssh server) side. In a more recent implementation, integration with LDAP made the most sense and allows for separation of user and login credentials. A single integrated solution is likely the holy grail in this space.
[0] https://github.com/notion/bastion
Nope! I utilize env files for all of my password/privileged settings. In the command entry for docker-compose.yml, you can then use a non-templated env var (one that docker-compose itself doesn't fill) by replacing a single dollar sign with two. That then loads the credential from the environment instead of command line.
Posted by
antoniomika on Friday March 22, 2024 @12:44PM
from the blog.antonio.cx dept.
Thanks for the feedback and trying things out!
- We like the "ssh to create an account" idea too. Makes it easy to confirm a user's identity which is nice and uses tried and true auth/encryption methods. Feedback has been good overall for the experience, main issue is managing account reset methods as that is a bit difficult.
- Noted on the account signup UI, we'll look into how we can work on making that cleaner (a blinking cursor is probably a good start).
- Once you signup, you can actually ssh to pgs without any username set and it will find the account for the public key used on signup.
- The site URL is a bit hard to deal with when uploading multiple files. We'll think of how to make this more clear.
- There's a "cli" based workflow with pgs. You can list your sites with `ssh pgs.sh ls`, you can replace `ls` with `help` for a list of other commands. We want to move away from the TUI a bit and have commands that are easy to be scripted.
- $20/year :)
Thanks again for all of the feedback, always appreciated!
We do use Caddy, but just for reverse proxying and handing TLS. We utilize custom http/ssh servers on the backend to handle everything. All of our work is open source and we do development in the open / discuss features over IRC on Libera. You could self host pgs if you wanted! Here's the repo:
https://github.com/picosh/pico
Most of the services we've developed at
https://pico.sh are more-so geared to "power users". It was difficult to quantify that in a single word so hackers is where we landed. Being users of HN ourselves, it felt like the right term but any pico.sh service is open to anyone!
Thanks for the feedback! This should definitely be supported so we'll get on fixing that!
We don't presently have webhooks, but do have a GitHub action for this (
https://github.com/marketplace/actions/pgs-action). The goal was to make it easy to deploy using off the shelf tools and not require anything to be installed for usage. I could see us thinking about making this a feature/addon down the road.
We have rsync implemented with our other pico services, but we need to spend some time to finish implementing the rest of the protocol (support proper diff/upload, this includes recursive file uploads). We'll have that implemented once we're ready to open this up to everyone else. Of course, contributions to help get it over the line are always appreciated :)