SSH vom Android-Handy nutzen

Installieren Sie einen SSH-Client oder, wenn Sie die echten OpenSSH-Befehle möchten, eine Terminal-App mit Linux-Umgebung. Erzeugen Sie auf dem Handy einen Schlüssel und tragen Sie dessen öffentlichen Schlüssel auf dem Server ein. In einer solchen App: pkg install openssh, ssh-keygen -t ed25519, ssh-copy-id user@server, dann ssh user@server. Nutzen Sie tmux auf dem Server, denn Android kann die Verbindung im Hintergrund anhalten.

Sie arbeiten auch vom Mac, iPhone oder iPad aus? Dort hält Wardterm Ihre Sitzungen auf dem Server für Sie am Laufen. Zeigen

Aktualisiert am .

Was Sie brauchen

  • Einen Server, der SSH annimmt, und seine Adresse.
  • Einen Netzwerkweg dorthin. Ein Heimserver hinter einem Router braucht ein VPN wie Tailscale oder einen weitergeleiteten Port: siehe SSH ohne öffentliche IP.
  • Einen Client auf dem Handy: eine SSH-App oder eine Terminal-App mit Linux-Umgebung.
  • Einen Schlüssel, der für dieses Handy erzeugt wurde. Verwenden Sie nicht den von Ihrem Laptop weiter.

Einen SSH-Client beurteilen

Welchen Sie auch ansehen, prüfen Sie diese Punkte:

  • Prüfung des Host-Schlüssels. Er muss beim ersten Verbinden den Fingerprint zeigen und anhalten, wenn er sich ändert. Das schützt Sie in einem öffentlichen Netz.
  • Schlüsseltypen. Er sollte Ed25519-Schlüssel mit Passphrase erzeugen und akzeptieren.
  • Wo Schlüssel liegen. Schlüssel im Android Keystore bleiben nicht exportierbar und können die Bildschirmsperre verlangen. Ein Schlüssel als Datei lässt sich sichern, ist aber nur so sicher wie der Speicher der App. Prüfen Sie auch, ob etwas hochgeladen wird und ob dieser Upload auf dem Gerät verschlüsselt wird.
  • Verbunden bleiben. Ein Vordergrunddienst mit sichtbarer Benachrichtigung ist das Zeichen, dass die App die Nutzung im Hintergrund ernst nimmt.
  • Tastatur. Strg, Esc, Tab und die Pfeiltasten müssen erreichbar sein, sonst sind tmux und vim mühsam.
  • Was Sie sonst brauchen. Jump-Hosts, Portweiterleitung und SFTP gibt es nicht in jeder App.
  • Quelle. Offener Quellcode und eine klare Datenschutzerklärung zeigen, was die App mit Ihren Daten macht. Diese App wird Schlüssel zu Ihren Servern halten, verlangen Sie das also.

Schlüssel auf einem Handy

Verwenden Sie einen Schlüssel pro Gerät, mit Passphrase. Handys gehen verloren, und mit einem eigenen Schlüssel entfernen Sie eine Zeile aus authorized_keys, und jedes andere Gerät funktioniert weiter. Siehe Schlüssel sperren. Nutzen Sie auch eine Bildschirmsperre: Eine App, die sich Ihre Passphrase merkt, ist nur so sicher wie das entsperrte Handy.

Erzeugen Sie den Schlüssel auf dem Handy und bringen Sie nur den öffentlichen Schlüssel davon weg. Einen privaten Schlüssel von Ihrem Laptop über eine Chat-App oder einen Cloud-Ordner zu kopieren, hinterlässt Kopien, die Sie nicht löschen können.

Warum die Sitzung im Hintergrund stirbt

Das ist normales Verhalten von Android, kein defekter Server.

  • Doze. Ein Handy, das nicht am Strom hängt, still liegt und dessen Bildschirm aus ist, hindert Apps an der Netzwerknutzung, abgesehen von kurzen Wartungsfenstern. Es ignoriert auch Wake Locks. Eine lange ungenutzte SSH-Verbindung übersteht das nicht.
  • Hintergrundbeschränkungen. Eine App ohne sichtbaren Bildschirm und ohne Vordergrunddienst wird eingeschränkt, und asynchrone Arbeit endet, wenn sie den Vordergrund verlässt.
  • Akkueinstellungen. Android lässt Sie eine App unter Einstellungen, Akku, Akkuoptimierung ausnehmen. Manche Hersteller fügen strengere eigene Regeln hinzu, unter anderen Menünamen.
  • Netzwechsel. Der Wechsel von WLAN zu mobilen Daten ändert Ihre IP-Adresse, und eine einfache SSH-Verbindung übersteht das auf keinem Gerät.

Gehen Sie also davon aus, dass die Verbindung abbricht, und behalten Sie die Arbeit auf dem Server. Nutzen Sie tmux und hängen Sie sich nach dem erneuten Verbinden wieder an:

tmux new -A -s main

Siehe SSH-Sitzungen mit tmux am Leben halten. Wechseln Sie oft zwischen Netzen, lesen Sie Mosh oder SSH.

Echtes OpenSSH auf Android

Manche quelloffene Terminal-Apps für Android bringen eine Linux-Umgebung mit Paketverwaltung mit, ohne dass Root nötig ist. Installieren Sie sie nur aus einer Quelle: Builds aus verschiedenen Stores können mit unterschiedlichen Schlüsseln signiert sein und aktualisieren sich nicht gegenseitig.

Installieren Sie OpenSSH und erzeugen Sie einen Schlüssel:

pkg update
pkg install openssh
ssh-keygen -t ed25519 -C "android-phone"

Installieren Sie ihn auf dem Server und verbinden Sie sich. Das sind dieselben Befehle wie auf jedem Linux-Rechner:

ssh-copy-id user@server
ssh user@server

Um den Schlüssel von Hand irgendwo einzufügen, geben Sie ihn aus:

cat ~/.ssh/id_ed25519.pub

Ihr Schlüssel liegt im privaten Speicher der App, das Deinstallieren der App entfernt ihn also. Mit einem Schlüssel pro Gerät ist das in Ordnung: Fügen Sie einen neuen hinzu.

Doze ignoriert Wake Locks, nehmen Sie die App für lange Aufgaben also von der Akkuoptimierung aus. Ab Android 12 kann das System auch von einer App gestartete Prozesse beenden, entweder oberhalb eines systemweiten Limits von 32 oder bei zu hoher CPU-Last im Hintergrund. Es ist ein weiterer Grund, lange Aufgaben auf dem Server zu behalten.

Fragen

Kann ich einen SSH-Server auf Android betreiben?

Ja, in einer Terminal-App mit Linux-Umgebung: Installieren Sie openssh und starten Sie sshd. Er muss auf einem Port über 1024 lauschen, oft 8022, weil Android-Apps ohne Root keine niedrigeren Ports öffnen können. Melden Sie sich mit einem Schlüssel an.

Quellen

Mehr zu SSH vom Smartphone

Alle Anleitungen