Updating Tailscale over Tailscale SSH

Tailscale version 1.26.1
Your operating system & version Ubuntu 20.04

I setup Tailscale SSH recently on a small VPS node that has had Tailscale on it for some time. Everything was working fine. Today I was doing routine updates via sudo apt update and sudo apt dist-upgrade. Tailscale was one of those updates. When the update got to that part of the upgrade, I got this message:

Setting up tailscale (1.26.2) ...
Tailscale SSH is shutting down.

Progress stalled at that point. After a few minutes, the SSH connection timed out on Putty. At this point I was unable to reach my VPS. I use Zerotier as a backup and I was not even able to connect this way either. Luckily I was able to remotely reboot from the VPS provider’s control panel and everything came back ok.

I also ran tailscale bugreport when I reconnected, just in case it helps:
BUG-b49d94bad3c8b6fbb9359d7e319cc4ae26e4e8a7b4a093acda14771f92ee387f-20220707202742Z-8974020e4b22b3ab

With that said, I’m a little concerned at updating anything remotely. I’ve usually had a smooth experience where the SSH session would stall for maybe 10 seconds while Tailscale would update, but not this time. And the Tailscale SSH shutting down message was the last thing I saw.

Is this expected behavior? I’d guess not, but open to a better way to update to avoid this (other than opening up ports).

2 Likes

I have experienced the same problem, the ssh session was terminated but I was able to reconnect almost immediately

1 Like

I upgraded to 1.28.0 today and things went smoother. Instead of just failing and being unreachable (over Tailscale SSH), the Putty session just exited after it upgraded the Tailscale package. I was then able to reconnect right away.

1 Like

Nowadays it seems to terminate the session more gracefully, but it still kills the session. The ssh daemon does not terminate right away after sshd has updated, but waits until the connections are all terminated before switching binaries.
Something similar would be nice to have for tailscale too. Like only updating/replacing the binary at a specific time (cron job?).
This would make it easier to update tailscale using IaC (like ansible).

1 Like