I run screen inside my mosh sessions which provides scrollback, among other features. (Tmux is another option.) ET is also a great solution, but I happen to need screen or something like it for its other features anyway.
I've been using mosh since it was announced, but I periodically try Eternal Terminal.
However I havent ever managed to get ET running on Amazon Linux which all my AWS EC2 instances run. I've tried compiling, docker, app images and nothing has worked.
Just checked this out, and the scrollback feature looks great.
I'd like to try this out, but am I understanding correctly that this needs to be installed on the server side as well as the client? That seems like a fairly large limitation compared to mosh.
Eternal Terminal collects crashes and errors in order to help us improve your experience.
The data collected is anonymous.
You can opt-out of telemetry by setting the environment variable ET_NO_TELEMETRY to any non-empty value.
Mosh has been sort of semi-neglected in a while - they did merge PRs, but did not release stable in years - but very recently, they started releasing new versions again.
I have been using mosh on and off, and actually appreciated that the software was so robust that it just works without frequent updates, and as far as I understand, most security is in ssh, so there would not really be a need for a new version.
Your understanding is sort of mistaken. Mosh does an initial handshake over ssh, but after that it’s a custom UDP protocol. There have been and could be more security bugs in that UDP protocol.
The only mosh CVE [1] was in the terminal emulator (a DoS that could only be triggered by a local user), not in the protocol. There have been no vulnerabilities in mosh's UDP protocol.
On Wireguard's homepage[1] it says "[Wireguard] is even capable of roaming between IP addresses, just like Mosh. There is no need to manage connections, be concerned about state, manage daemons, or worry about what's under the hood."
Has anyone been using Wireguard as a successful Mosh replacement? Would love to hear your experience.
It kinda works, but mosh reconnects on failure regardless of how long time has passed. Since WG is a layer below, the TCP connection eventually gets reset. It is a huge difference. Also mosh works around lag by local echo, no such thing in WG.
If I'm expecting echo, it does not add anything useful to my experience. I'm not waiting for every typed character to appear on my screen before I type next one.
If I'm expecting data from the server (say I'm searching through shell history), it might even make my experience worse because of flickering between local and then remote state.
I'm regularly working with 100-200 ms latency servers where latency is noticeable. Improving my perceptual latency was never something I want.
Better approach is to use client/server software. Like vscode. Of course it's out of capabilities of terminal emulator and rather requires full rethinking of the entire shell architecture. But at least it would be meaningful improvement. Like I'm typing first character in shell history search, server transfers all 100 matched lines to the client and now my client can further filter this list without any server hops.
It doesn't really fully replace mosh since it doesn't do any of the perceptual lag reduction, but I do use SSH over Wireguard and it is fairly stable. It can indeed survive roaming.
I use ZNC over wireguard and it works fairly well! I can travel in the car with my phone connected to IRC, roam from my home WiFi to the cellular network and back without disconnecting from ZNC! It even works pretty well when cellular service is spotty.
This isn't quite what you asked but I think it's relevant!
Try looking at options ServerAliveInterval and TCPKeepAlive, they should prevent SSH from detecting when there's temporary transport issues and persist when wireguard roams between IPs.
I gave mosh a shot on a whim, and it's just magic. The only time I have to re-run it is when the client is powered down. Otherwise, I've had a rock solid remote terminal for months, surviving VPN and network finickyness.
One issue that Mosh doesn't handle well bad lag/high latency. It's great for automatically reconnecting if you have a flaky connection, but it actually makes a slow connection into a worse experience because the local terminal isn't matching the remote session.
I wish I could use mosh, but unfortunately it can't use ProxyJump to tunnel through a bastion host which is how I always use SSH, which makes sense as it's use Proxy commands itself.
I have very mixed feelings about bastion hosts in general. It usually feels like moving the problem around, eventually you end up adding even more complexity just to do your job. Wireguard (or Zerotier/Tailscale, depending on your threat model) might end up being simpler. Complex is the enemy of secure - if it's hard to use, then it's easy to make a mistake.
I tend to agree with you, but we don't always have control over the networks we access, and fitting in with other org's policies is often required. ProxyJump is very handy for that.
There is a way [1] but the first hop will be ssh/tcp which may defeat the point of doing this if the first hop has high loss or the IP changes constantly. ncat from nmap can also be used within SSH vs their suggested fifo method. Both have some caveats. Here [2] is some further discussion.
Agreed. I think the only use cases would be that your fist hop is stable but you want to proxy to another region over a lossy link but I can't imagine that would be very common. Maybe when using a satellite link or a inter-continental connection has a single over-saturated link but that would be a very fringe case. Perhaps when Starlink gets over-subscribed that could be a case.
I forgot why but I installed ET (painstakingly by creating a Gentoo ebuild and RC scripts…) then realized I don’t want it. I wish I could remember why.
[1]: https://eternalterminal.dev/