Troubleshooting

This page covers common Mobile SSH issues and the first checks to run before changing server-side SSH settings.

Cannot connect

Check:

If the same host works from another device, compare the exact host, port, username, key, and network path.

Authentication failed

Check:

For encrypted private keys, enter the passphrase in the password/passphrase field.

Private key import failed

Private key import uses the system file picker. If import fails:

Keyboard input is delayed or changed

Mobile SSH sends keystrokes straight to the shell with autocorrect and predictive suggestions turned off, so the keyboard should not rewrite text before it reaches the remote side. If your keyboard still alters input, confirm no system-level replacement or clipboard tool is intercepting it, and use the extra key row for terminal keys such as ESC, TAB, CTRL, arrows, HOME, END, PGUP, and PGDN.

tmux scrolling is not what you expect

Mobile SSH changes scroll behavior based on terminal state. In tmux or other alternate-screen programs, scroll gestures may send tmux copy-mode commands rather than scrolling local history. If tmux mouse mode is enabled, the app sends mouse-wheel escape sequences.

If scrolling feels wrong:

Session dropped after screen lock

On Android, Mobile SSH uses keepalives, a foreground service, wake lock, Wi-Fi lock, and reconnect attempts to reduce disconnects. Android battery policies can still stop background work.

Check:

On iOS, the system suspends apps in the background, so a raw SSH connection cannot be kept open indefinitely once you switch away or lock the screen. A short grace period covers quick app switches; for anything longer, enable Auto-attach tmux session on the server profile (or use the Eternal Terminal transport) so reconnecting drops you back into the same shell where you left off.

File transfer cannot browse phone files

Mobile SSH asks for no storage permission on Android. Instead, the local pane shows one folder that you grant with the system folder picker — if it is empty, use Pick folder to choose one. The grant persists, so this is a one-time step.

If remote files load but local files do not, the SSH connection is fine and you simply have no folder granted yet.

On iOS the local pane shows the app’s documents area, and you add files through the system document and photo pickers. Downloads there are also visible in the Files app under On My iPhone.

Upload or download failed

Check:

Port forward failed

Check:

Debug logs

The two platforms record different things, so pick the one that matches your problem.

Android — terminal and rendering. Enable Settings → Debugging → Show Debug and Logs buttons, then use the Debug button that appears on the start screen. It records terminal events, SSH data sizes, touch input, resize behaviour, and tunnel lifecycle. Starting a recording warns you first that it captures every key you type, passwords included. Stopping it writes an archive to your Downloads folder.

iOS — connections and reconnects. Turn on Settings → Diagnostics → Record debug log. It records each address dialled and why it failed, reconnect attempts and their backoff, dropped connections, “peer stopped answering keepalives”, network changes, and tmux commands with their errors. Settings shows a live line count so you can confirm it is recording, and Export Debug Log shares it as a text file. It is held in memory and covers the current app session only.

Review any debug log or archive before sharing it. They are intended for troubleshooting and may reveal server names, addresses, timing, or other environment details — and on Android, anything you typed.