Troubleshooting 📱 Mobile
Common problems, with the actual fix instead of "uninstall and reinstall."
This guide describes the mobile (Android) client. Desktop reproductions and the
--debug flag are covered in Desktop Troubleshooting.
🚫 "Connection refused" / "Connection timed out"
- Check the host and port are right. SSH defaults to
22; some servers run on2222or other custom ports. - Try the host from a desktop (
ssh user@host). If that also fails, the issue is server-side or network — not TabSSH. - If you're on cellular, your carrier may block port 22. Try a different port or use a jump host on a non-blocked port.
- Some corporate / hotel WiFi blocks SSH outright. Same workaround.
- If the server is behind a NAT, port forwarding on the router needs to map external port → SSH port.
🔐 "Permission denied" / authentication fails
- Confirm the username matches what the server expects (
root, your user, etc.). - For password auth: typo? Caps lock? Saved password gone stale because you changed it server-side?
- For key auth: is the right key selected on the connection? Is its public key actually in
~/.ssh/authorized_keyson the server, with correct permissions (700on~/.ssh,600onauthorized_keys)? - If the key is passphrase-protected, you'll be prompted at connect time — make sure you typed the passphrase right.
- Tap Copy error in the failure dialog to grab the SSH error string and search it.
⚠️ "Host key changed" warning
- This is the MITM warning. It means the server's host key is not the one TabSSH stored last time.
- Most common benign cause: the server was reinstalled, or its SSH host keys were rotated. Verify with the admin.
- If you confirm it's legitimate: tap the warning → select the option to remove the old key from the trust store, then reconnect and accept the new fingerprint.
- Do NOT click through this warning blindly, especially on hostile networks.
🐢 Slow / laggy terminal
- Enable Compression in the connection's Advanced Settings — significant on flaky cellular.
- Increase Keep-alive interval if connections are dropping when idle.
- Use Mosh if the network is genuinely bad — it's designed for high-latency / lossy links and survives roaming.
- Set scrollback buffer lower if scrolling feels heavy on a low-end device (Settings → Terminal).
📡 Mosh issues
- TabSSH ships native
mosh-clientbinaries per Android ABI in the APK — no separate install needed. - The server side must have
mosh-serverinstalled (apt install moshon Debian/Ubuntu). - UDP ports 60000-61000 must be open on the server's firewall (configurable, but those are the defaults).
- If Mosh refuses to start, check that the SSH handoff worked first — Mosh starts as an SSH login that hands off.
- If the server has a non-standard
$TERM, TabSSH ships fallback terminfo entries embedded in the binary.
☁️ Cloud sync isn't picking things up
- Double-check the SAF folder is still pickable — some storage providers (Nextcloud, etc.) revoke long-running URI permissions; you may need to re-pick the folder in Settings → Sync.
- If sync fails on Device B with "decryption failed", you've typed the wrong sync password — there's no recovery without it.
- Sync only fires when at least one trigger is enabled (manual, on launch, on change, scheduled). Check Settings → Sync → Triggers.
- WiFi-only mode won't sync on cellular — toggle off if you want to sync everywhere.
- Background sync uses Android's WorkManager; battery optimisation can delay scheduled jobs by minutes to hours. Whitelist TabSSH if this matters.
🐛 App crashes or freezes
- Debug builds auto-enable a crash reporter and an ANR watchdog (logs main-thread freezes >5s). The crash report appears on next launch; tap "Copy" and share it.
- Release builds: enable Settings → Logging → Enable Debug Logging, reproduce the issue, then menu → Copy Debug Logs.
- Paste the log into a GitHub issue (issues). Include device model, Android version, and what you were doing.
- Don't share password / key contents in logs — TabSSH redacts the obvious ones, but eyeball before posting.
📦 APK won't install
- Enable "Install from unknown sources" for your browser / file manager in Android Settings.
- If upgrading: TabSSH refuses to install over a build with a different signing key. Uninstall the old APK first, then install the new one.
- If the APK is corrupt, the SHA-256 checksum on the GitHub release page will mismatch — re-download.
- Wrong architecture: ARM64 won't install on an ARM-only device, and vice-versa. Most modern phones are
arm64-v8a; emulators are usuallyx86_64.