I wanted to be able to SSH into my laptop from my phone while I’m out — pull a file, kick off a script, check on something, or push an update to this site — without needing my laptop open in front of me. Turns out this takes about ten minutes to set up with two free apps: Tailscale and Termius.
Table of contents
Open Table of contents
The idea
- Tailscale puts your phone and laptop on the same private network (a mesh VPN built on WireGuard), no matter what Wi-Fi or cell network either one is on. No port forwarding, no exposing SSH to the public internet.
- Termius is a terminal/SSH client for iOS and Android that lets you connect to that laptop and get a real shell.
Once both are set up, you get a terminal on your phone that reaches your laptop anywhere it has internet — so you can run commands, git pull/git push, read or move files, check on a long-running process, or restart something, all from your pocket.
Setup
1. Enable Remote Login on your Mac
macOS ships with an SSH server, it’s just off by default.
Go to System Settings → General → Sharing and toggle Remote Login on.
2. Install Tailscale on both devices
- On your laptop:
brew install tailscale(the CLI/daemon version — not the sandboxed App Store app — is what supports Tailscale’s SSH features), or grab it from tailscale.com/download. - On your phone: install the Tailscale app from the App Store / Play Store.
- Sign in with the same account on both. Tailscale’s free plan covers this easily — it supports multiple users and up to 100 devices.
Turn Tailscale on both devices. Your laptop now has a stable Tailscale IP (something like 100.x.x.x) that only devices on your Tailscale network can reach.
If you want to skip remembering IPs, Tailscale’s MagicDNS lets you SSH using the machine’s name instead, e.g. ssh suyash@my-laptop.
3. Set up Termius on your phone
- Open Termius, go to Keychain, tap +, and Generate Key to create an SSH key pair.
- Add your laptop as a new Host: enter its Tailscale IP (or MagicDNS name), your laptop username, and select the key you just generated.
- Copy the public key over to your laptop’s
~/.ssh/authorized_keys(Termius can do this for you when you add the host, or you can do it manually).
4. Connect
Open the host in Termius. You’re now in a real shell on your laptop, routed entirely over Tailscale’s encrypted network — not the open internet.
What I actually use it for
- Pushing updates to this website — editing a post, running the build, committing, and pushing to GitHub, all from Termius on my phone.
- Running programs — kicking off a script or checking if something I left running is done.
- Grabbing files —
cat-ing a config,scp-ing something off the laptop, or just checking a log. - Asking Claude Code to do things — since I already run Claude Code from the terminal, this means I can ask it to make changes, run tests, or fetch something, and watch the output live from my phone.
Why this setup over the alternatives
Screen-sharing / remote desktop apps work too, but they’re heavier — you’re streaming a whole screen over a connection that might be spotty on cell data. A terminal is just text, so it stays fast and usable even on bad connections, and it’s exactly what you need if all you’re doing is running commands or checking files.
The security model is also worth calling out: Tailscale means your laptop’s SSH port is never exposed to the public internet at all — only devices you’ve authorized onto your private Tailscale network can even attempt to reach it. Combine that with key-based auth (no passwords) and you’ve got a setup that’s both convenient and reasonably locked down.