Zum Inhalt springen
kaiport

Verbindungen und Terminal in der mobilen AppVorschau

Wie kaiport für iPhone und iPad mit deinen Verbindungen, der SSH-Anmeldung, Host-Schlüsseln und Jump-Hosts umgeht und was sein Terminal kann.

Die Bildschirmfotos der mobilen App auf diesen Seiten sind Platzhalter und werden durch Bilder der veröffentlichten App ersetzt.

kaiport für iPhone und iPad nutzt dieselbe Art von Verbindungen wie die Mac-App: die, die du in der App anlegst, und die, die du importierst, zum Beispiel aus einem Export der Mac-App. Diese Seite beschreibt Verbindungen, die SSH-Anmeldung und das Terminal.

Deine Verbindungen

Eine Verbindung hat auf dem Smartphone dieselben Felder wie in der Mac-App: Name, Farbe, Tags, Gruppe, Favorit und Notizen, dazu die Einstellungen ihrer Verbindungsart. Die App zeigt zuerst die Favoriten, dann die Verbindungen, die du auf diesem Gerät zuletzt benutzt hast, und danach den Rest nach Namen – dieselbe Reihenfolge wie in der Mac-App. Wann du eine Verbindung zuletzt benutzt hast, speichert jedes Gerät für sich.

Du kannst Verbindungen anlegen, bearbeiten, duplizieren und löschen, Favoriten markieren, Tags vergeben, Verbindungen in Gruppen sortieren und sie durchsuchen. Schnellverbindung mit user@host:port verbindet, ohne zu speichern.

Verbindungsarten

ArtÖffnetAnmeldung mit
SSHEin Terminal, dazu Dateien über SFTPPasswort, Schlüssel oder Keyboard-Interactive
FTP / FTPSEinen DateibrowserBenutzername und Passwort oder anonym
S3Einen DateibrowserAccess Key ID und Secret Access Key
WebDAVEinen DateibrowserBenutzername und Passwort
Azure BlobEinen DateibrowserSpeicherkonto und Zugriffsschlüssel

Speicherverbindungen beschreibt die Seite Dateien in der mobilen App.

SSH-Anmeldung

Die App versucht die Anmeldeverfahren, die der Server anbietet, in dieser Reihenfolge: den bei der Verbindung gespeicherten Schlüssel, ein Passwort und dann Keyboard-Interactive.

Passwort

Hat die Verbindung ein gespeichertes Passwort, verwendet die App es. Sonst fragt sie beim Verbinden danach und bietet an, sich das Passwort für die Verbindung zu merken. Ein gemerktes Passwort liegt wie die anderen Zugangsdaten der Verbindung im iOS-Schlüsselbund. Ist das Passwort falsch, fragt die App erneut; nach drei Fehlversuchen bricht die Anmeldung ab.

Schlüssel

Die App liest private Schlüssel in diesen Formaten:

  • OpenSSH (-----BEGIN OPENSSH PRIVATE KEY-----)
  • PEM, zum Beispiel -----BEGIN RSA PRIVATE KEY-----
  • PuTTY (.ppk), Formatversionen 2 und 3

Schlüssel vom Typ Ed25519, ECDSA und RSA funktionieren. Ist ein Schlüssel verschlüsselt und keine Passphrase gespeichert, fragt die App beim Verbinden bis zu dreimal nach der Passphrase und bietet an, sie sich zu merken. PuTTY-Dateien der Formatversion 1 werden nicht unterstützt; speichere den Schlüssel mit einem aktuellen PuTTYgen neu.

Der Schlüssel selbst liegt in der App, im iOS-Schlüsselbund. Du kannst eine Schlüsseldatei aus der Dateien-App importieren oder den Schlüssel einfügen. Importierte Verbindungen bringen ihre Schlüssel nicht mit: Der Export der Mac-App enthält keine Schlüssel, und eine Verbindung, die nur über den Pfad auf eine Schlüsseldatei verweist, etwa aus ~/.ssh/config, hat auf dem Smartphone keinen Schlüssel. Füg den Schlüssel in der App zur Verbindung hinzu, oder melde dich mit Passwort oder per Keyboard-Interactive an, sofern der Server das erlaubt.

Die App kann außerdem auf dem Gerät ein neues Ed25519-Schlüsselpaar erzeugen, samt der Zeile mit dem öffentlichen Schlüssel (ssh-ed25519 AAAA…), die auf dem Server in ~/.ssh/authorized_keys gehört.

Keyboard-Interactive

Manche Server stellen bei der Anmeldung Fragen, zum Beispiel nach einem PAM-Passwort oder einem Einmalcode für die Zwei-Faktor-Authentifizierung. Die App zeigt jede Frage des Servers an und schickt deine Antworten zurück. Hat die Verbindung ein gespeichertes Passwort, beantwortet die App damit eine einfache Passwortabfrage selbst. Schickt der Server ein Anmelde-Banner, zeigt die App es ebenfalls an.

SSH-Agent

kaiport hat keinen SSH-Agent und keine Agent-Weiterleitung, weder auf iPhone und iPad noch in der Mac-App. Eine Verbindung, die sich über den Agent anmelden soll, etwa aus einer importierten ~/.ssh/config, hat keinen Schlüssel. Die App kann dafür nur die Anmeldung mit Passwort oder per Keyboard-Interactive anbieten, sofern der Server sie erlaubt. Willst du dich mit einem Schlüssel anmelden, füg der Verbindung in der App einen Schlüssel hinzu.

Host-Schlüssel

Die App prüft den Host-Schlüssel jedes Servers nach dem Prinzip „Vertrauen beim ersten Kontakt“ (Trust on First Use), wie OpenSSH:

  • Erste Verbindung: Die App zeigt den Schlüsseltyp und den SHA256-Fingerabdruck und fragt, ob du dem Server vertraust. Wenn nicht, bricht die Verbindung ab.
  • Bekannter Schlüssel: Die Verbindung läuft ohne Rückfrage weiter.
  • Geänderter Schlüssel: Die App fragt erneut und zeigt den Schlüssel, den sie vorher gespeichert hatte.

Vertraute Schlüssel speichert das Smartphone als host oder [host]:port, so wie OpenSSH sie schreibt. Jedes Gerät hat seine eigenen bekannten Hosts. Das Smartphone fragt deshalb für jeden Server einmal nach, auch wenn dein Computer ihm schon vertraut. In den Einstellungen siehst du die gespeicherten Schlüssel und kannst sie vergessen. Entfernst du einen gespeicherten Schlüssel, fragt die App beim nächsten Verbinden erneut.

Jump-Hosts

Eine Verbindung kann ihren Server über eine andere gespeicherte Verbindung erreichen, wie mit ProxyJump in OpenSSH. Jump-Hosts gehören zu kaiport Pro: Ohne verbindet eine Verbindung mit Jump-Host gar nicht, statt direkt zum Server zu gehen. Die App meldet sich zuerst am Jump-Host an, öffnet von dort einen Kanal zum Zielserver und führt die SSH-Sitzung des Ziels durch diesen Kanal. Beide Server durchlaufen die Prüfung des Host-Schlüssels, und jeder meldet sich mit seinen eigenen Zugangsdaten an. Ein Import aus ~/.ssh/config übernimmt die ProxyJump-Einstellungen; der Export der Mac-App enthält die Jump-Host-Einstellung nicht, du wählst sie in der App also neu. Siehe SSH-Verbindungen.

Das Terminal

Das Terminal der iOS-App baut auf SwiftTerm auf, einem Terminal-Emulator für Apple-Plattformen. Jede Sitzung fordert ein Terminal vom Typ xterm-256color an und übergibt LANG=en_US.UTF-8 und LC_TERMINAL mit dem Namen der App; der Server übernimmt diese Variablen nur, wenn seine Einstellung AcceptEnv sie erlaubt.

  • Tabs: Jede Sitzung bekommt wie in der Mac-App einen eigenen Tab. Du wechselst, schließt und öffnest Tabs wieder, während ihre Sitzungen weiterlaufen.
  • Tastatur: Eine Leiste über der Tastatur bietet Esc, Ctrl, Tab, die Pfeiltasten und Funktionstasten. Mit einer Hardware-Tastatur am iPad funktionieren die Kürzel der Mac-App, zum Beispiel ⌘T für einen neuen Tab, ⌘W zum Schließen, ⌘R zum Neuverbinden, ⌘J für AI Pilot und ⌘B für die Dateien.
  • Schrift: die mitgelieferte MesloLGS Nerd Font, damit Powerline-Prompts richtig aussehen.
  • Farbschemata: die acht eingebauten Schemata der Mac-App mit denselben Farben: kaiport Dark (Standard), One Dark, Dracula, Nord, Catppuccin Mocha, Solarized Dark, GitHub Light und Solarized Light.
  • Startbefehl: Der Startbefehl der Verbindung (in der Mac-App Befehl nach dem Verbinden) läuft, sobald die Shell ihren ersten Prompt zeigt, und nach einer Wiederverbindung erneut.
  • Wiederverbinden: Bricht eine Sitzung unerwartet ab, während die App geöffnet ist, verbindet die App sie neu. Das ist eine Einstellung und standardmäßig eingeschaltet. Eine abgeblendete Zeile im Terminal markiert die Stelle.
  • Keepalive: Die App schickt standardmäßig alle 15 Sekunden ein SSH-Keepalive und bemerkt so, wenn eine Verbindung abgerissen ist. Du kannst den Abstand ändern oder Keepalives abschalten.

Schriftgröße, Cursor und Scrollback findest du in den Terminal-Einstellungen.

Prompt-Erkennung

Die App führt im Hintergrund eine Kopie des Terminal-Bildschirms und erkennt daran, wann die Shell an ihrem Prompt wartet. Das braucht sie, um den Startbefehl im richtigen Moment zu senden, und für AI Pilot, der wissen muss, wann ein Befehl fertig ist.

  • Mit Shell-Integration markiert die Shell ihren Prompt und das Ende jedes Befehls mit Escape-Sequenzen (OSC 133). Die Erkennung ist dann exakt, und AI Pilot erfährt auch den Exit-Code. Meldet die Shell zusätzlich ihr Arbeitsverzeichnis (OSC 7), kennt die App den aktuellen Ordner.
  • Ohne Shell-Integration arbeitet die App mit Heuristiken: Die Ausgabe ist zur Ruhe gekommen, und die Zeile mit dem Cursor sieht aus wie ein Prompt. Sie endet mit einem Zeichen wie $, #, %, > oder ❯, beginnt mit ➜, enthält benutzer@host, endet mit einem Powerline-Trennzeichen oder gleicht dem Prompt, den die Sitzung als ersten gezeigt hat.

Die Shell-Integration steckt in der Shell-Konfiguration auf dem Server. Hast du sie für die Mac-App eingerichtet, nutzt das Smartphone sie mit. Siehe Shell-Integration.

Snippets

Snippets sind wiederkehrende Befehle, die du wie in der Mac-App unter einem Namen speicherst. Auf dem Smartphone gehören sie zu den App-Einstellungen und bleiben auf dem Gerät.