SSH-Schlüssel auf iPhone und iPad werden direkt auf dem Gerät erzeugt und im sicheren Speicher des Systems aufbewahrt. Nur der öffentliche Schlüssel kommt auf den Server, wo er per ssh-copy-id oder von Hand zu ~/.ssh/authorized_keys hinzugefügt wird. Der private Schlüssel sollte das Telefon nie verlassen, und der Server erwartet die Berechtigungen 700 für ~/.ssh und 600 für authorized_keys.
So erzeugst du einen Ed25519-SSH-Schlüssel auf iPhone oder iPad
OpenSSH unterstützt Ed25519-Schlüssel seit Version 6.5, die im Januar 2014 erschienen ist, daher akzeptiert sie jeder halbwegs aktuelle Server. Für einen neuen Schlüssel ist Ed25519 der Typ der Wahl. Außerdem bist du damit nicht auf die SHA-1-Signatur ssh-rsa angewiesen, die seit OpenSSH 8.8 (September 2021) standardmäßig deaktiviert ist.
Auf einem Desktop-Rechner erzeugst du das Schlüsselpaar mit ssh-keygen. Die Optionen sind in der offiziellen Manpage von ssh-keygen aufgeführt:
ssh-keygen -t ed25519 -C "iphone-work"
# Creates ~/.ssh/id_ed25519 (private) and ~/.ssh/id_ed25519.pub (public)Auf iPhone oder iPad gibt es kein lokales ssh-keygen, deshalb erzeugt der SSH-Client den Schlüssel. In termi1 wird der Schlüssel auf dem Telefon erstellt und bleibt im sicheren Speicher des Systems. Am Ende hast du das übliche Paar:
- einen privaten Schlüssel, der das Gerät nie verlässt;
- einen öffentlichen Schlüssel, der aus einer einzigen Textzeile besteht (zum Beispiel
ssh-ed25519 AAAA… comment) und der einzige Teil ist, den du auf den Server kopierst.
Wenn du einen FIDO2-Sicherheitsschlüssel verwendest: OpenSSH akzeptiert ed25519-sk-Schlüssel seit Version 8.2 (Februar 2020). Auf dem Server muss diese oder eine neuere Version laufen.
Wo der SSH-Schlüssel auf dem iPhone im Vergleich zum Desktop gespeichert wird
Auf einem Computer mit OpenSSH ist der private Schlüssel eine Datei in ~/.ssh/ mit den Berechtigungen 600. Geschützt wird er nur durch diese Berechtigungen und, falls du eine festgelegt hast, durch eine Passphrase. Unter iOS liegt der Schlüssel im sicheren Speicher des Systems, und die App nutzt ihn zur Authentifizierung, ohne ihn als lose Datei herumliegen zu lassen.
| Was verglichen wird | iPhone / iPad (termi1) | Desktop (OpenSSH) |
|---|---|---|
| Wo der private Schlüssel liegt | Sicherer Speicher des Systems | Datei in ~/.ssh mit Berechtigungen 600 |
| Wie er erzeugt wird | Aus der App, direkt auf dem Gerät | ssh-keygen -t ed25519 |
| Wie der öffentliche Schlüssel auf den Server kommt | In authorized_keys eingefügt oder per termi1 Companion auf einem Mac gekoppelt | ssh-copy-id oder in authorized_keys eingefügt |
| Ob der private Schlüssel den Rechner verlässt | Nein; er geht auch nicht an termi1-Server | Nur wenn du ihn selbst kopierst |
| Was zwischen Geräten synchronisiert wird | Verbindungen und Shortcuts mit einem optionalen Konto; nie der private Schlüssel | Nichts; du kopierst die Konfiguration von Hand |
In der Praxis bekommt jedes Gerät seinen eigenen Schlüssel. Gib jedem einen Kommentar, der es identifiziert (iphone-work, ipad-home). Wenn du das Telefon verlierst, kannst du dann genau diese eine Zeile widerrufen.
Den öffentlichen SSH-Schlüssel mit ssh-copy-id auf den Server kopieren
ssh-copy-id hängt einen öffentlichen Schlüssel an ~/.ssh/authorized_keys auf dem Server an und legt das Verzeichnis an, falls es fehlt. Es läuft auf einem Rechner mit OpenSSH. Nutze es, wenn der öffentliche Schlüssel des iPhones bereits auf deinem Laptop ist (per AirDrop, E-Mail oder Zwischenablage) und sich der Laptop am Server anmelden kann.
# Save the iPhone's public key line as iphone-work.pub and upload it
ssh-copy-id -f -i iphone-work.pub user@server
# If sshd is not listening on port 22
ssh-copy-id -f -i iphone-work.pub -p 2222 user@serverDu brauchst -f, weil der private Schlüssel nicht auf dem Laptop liegt. Ohne diese Option verwendet ssh-copy-id den passenden privaten Schlüssel, um zu prüfen, ob der Schlüssel bereits installiert ist. OpenSSH lauscht standardmäßig auf TCP-Port 22, daher ist -p nur nötig, wenn du ihn geändert hast.
Den SSH-Schlüssel direkt vom iPhone aus zu authorized_keys hinzufügen
sshd erwartet die Berechtigungen 700 für ~/.ssh und 600 für authorized_keys, also setze sie gleich, während du den Schlüssel von Hand hinzufügst. Ohne Computer dazwischen meldest du dich einmal vom iPhone aus mit einem Passwort an und führst Folgendes aus:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo 'ssh-ed25519 AAAA...your-key... iphone-work' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysVerwende >>, nicht >. Eine einzelne spitze Klammer überschreibt die Datei und sperrt alle anderen Schlüssel aus.
Die Tastatur von termi1 hat Strg-, Tab- und Pfeiltasten, um die Zeile zu korrigieren. Mit dem integrierten SFTP kannst du authorized_keys ansehen oder herunterladen, um zu prüfen, ob die Zeile vollständig ist. Wenn du die KI nach dem Befehl fragst, wird er am Prompt eingetippt, ohne Enter zu drücken, und die KI erhält nie Schlüssel oder Passwörter.
Mit einem Mac geht es schneller. termi1 Companion (macOS 14 oder neuer, kostenlos, in der Menüleiste) prüft Entfernte Anmeldung, mosh-server und tmux. Anschließend koppelt es das iPhone über einen sechsstelligen Code, der den öffentlichen Schlüssel installiert.
Sobald die Anmeldung per Schlüssel funktioniert, setze PasswordAuthentication no in /etc/ssh/sshd_config. Lass deine aktuelle Sitzung offen, bis du den Zugriff per Schlüssel in einer zweiten Sitzung bestätigt hast.
4 Fehler bei der Nutzung von SSH-Schlüsseln auf iPhone oder iPad
Diese vier Probleme führen dazu, dass sshd wieder nach einem Passwort fragt oder sich die Sitzung gar nicht erst öffnet:
- Zu offene Berechtigungen. Mit
StrictModes yes, dem Standard, ignoriert sshd authorized_keys, wenn andere Benutzer in die Datei schreiben können. Setze sie wieder auf 700 und 600. - Zerbrochene Zeile beim Einfügen. Ein öffentlicher Schlüssel ist eine einzige Zeile, und ein Zeilenumbruch in der Mitte macht ihn ungültig.
- Annehmen, dass Mosh ohne Schlüssel auskommt. Mosh startet mosh-server über eine anfängliche SSH-Verbindung und braucht danach UDP 60000-61000. Port-Forwarding oder X11 bietet es nicht.
- Port 22 nur für dein Telefon öffnen. Für Rechner ohne öffentliche IP ist ein Mesh-Netzwerk ohne offene Ports wie Prialo oder Tailscale die sauberere Lösung.
Ist der Schlüssel eingerichtet, hält termi1 die Sitzung mit Mosh am Leben, wenn du von WLAN auf mobile Daten wechselst. Es nutzt tmux, sodass alles, was du laufen gelassen hast, noch da ist, wenn du zurückkommst. Das vollständige Terminal funktioniert ohne Konto; hol dir das termi1-Terminal im App Store.
Häufig gestellte Fragen
Kann man ssh-copy-id auf einem iPhone ausführen?
ssh-copy-id läuft nicht auf einem iPhone, weil iOS keine lokale Shell mit den OpenSSH-Werkzeugen mitbringt. Melde dich vom Telefon aus mit einem Passwort an und hänge den öffentlichen Schlüssel mit echo und >> an ~/.ssh/authorized_keys an. Alternativ führst du ssh-copy-id -f -i auf einem Computer aus, der den Server bereits erreicht.
Welchen SSH-Schlüsseltyp solltest du auf einem iPhone erzeugen?
Der beste SSH-Schlüsseltyp für ein iPhone ist Ed25519, den OpenSSH seit Version 6.5 vom Januar 2014 unterstützt. Verlass dich nicht auf die SHA-1-Signatur ssh-rsa, die seit OpenSSH 8.8 standardmäßig deaktiviert ist. Mit einem FIDO2-Sicherheitsschlüssel erfordert der Typ ed25519-sk OpenSSH 8.2 oder neuer.
Verlässt der private SSH-Schlüssel bei termi1 das iPhone?
Ein in termi1 erzeugter privater SSH-Schlüssel verlässt das iPhone nie: Er bleibt im sicheren Speicher des Systems und wird nie an termi1-Server gesendet. Das optionale Konto synchronisiert Verbindungen und Shortcuts, aber keine privaten Schlüssel. Die KI öffnet die Sitzung nicht und erhält nie Schlüssel oder Passwörter.
Welche Berechtigungen braucht authorized_keys, damit der Schlüssel funktioniert?
Die Datei authorized_keys braucht die Berechtigungen 600 und das Verzeichnis ~/.ssh die Berechtigungen 700, beide im Besitz des Benutzers. Bei aktiviertem StrictModes, dem Standard von sshd, führen lockerere Berechtigungen dazu, dass der Server den Schlüssel ignoriert und wieder nach einem Passwort fragt.