Sunday, 6 September 2026
Living on a canal boat, I depend heavily on mobile connectivity. While the connection is generally stable, it occasionally drops, usually due to low signal and switching between SIMs (single modem).
As a result, SSH sessions sometimes get stuck; one workaround is to use tmux as soon as I connect to a host, so if the connection drops, I can open a new connection and reattach.
That's how I did it until I came across tools like mosh (Mobile Shell) and et (Eternal Terminal), built to handle sessions that withstand connection dropouts and IP changes. They both have pros and cons. The biggest blocker for using both is that you need to manually install a daemon on the remote machine before you can use it; that's been a pain point when I have to set up each machine manually. I just wanted to connect and get going.
mosh initially establishes an SSH connection and then moves communication over to its daemon, pinging UDP packets back and forth. This has been fantastic, but it still leaves some things to be desired. mosh doesn't support native terminal scrollback; tmux still needs to be used for that. Sometimes, firewalls block UDP traffic, and I've had to fall back to plain SSH and hope the connection doesn't bug out. On the plus side, mosh has a predictive feature, so when the connection is slow, you can still see what you've typed before the server returns the updates.
When I came across et, I initially thought I'd found a winner; it supports scrollback! Sadly, it still needs the daemon installed, but I thought maybe I just have to live with that. et uses a separate TCP port from SSH for further communication. This became a big blocker. While mosh's UDP comms got blocked occasionally, et's TCP comms got blocked A LOT.
This week I came across a new player, ssh-obi, which doesn't require a prior daemon on the remote host but instead bootstraps it when the SSH connection's established. Further communication is also done over SSH, reconnecting and resuming a session when the connection flakes out, so no other ports are required. So far, if I can SSH into a box, I can use ssh-obi!
ssh-obi feels slower than mosh on a high-latency connection because it doesn't support predictive output, but it keeps my sessions alive and my terminal's scrollback accessible, even behind restrictive firewalls!