SSH Agent Forwarding unter iOS: NeoServer bewahrt Ihren privaten Schlüssel sicher auf dem iPhone auf
Index
Jeder, der schon einmal git clone auf einem Remote-Server ausgeführt hat, kennt das gleiche Problem: Wie soll sich dieser Server bei GitHub authentifizieren? Die gängigen Lösungen sind alles andere als ideal. Wenn Sie Ihren privaten Schlüssel auf den Server kopieren, sind bei einer Kompromittierung des Servers alle Ihre Ressourcen durch den Diebstahl des privaten Schlüssels gefährdet. Wenn Sie für jedes Repository einmalige Deployment-Schlüssel (Deploy Keys) erstellen, verstricken Sie sich in einem Albtraum der Schlüsselverwaltung. Wenn Sie als Notlösung auf HTTPS und Personal Access Tokens zurückgreifen, wird dieses Token im Klartext in der Datei .git-credentials auf der Festplatte abgelegt.
SSH agent forwarding (SSH-Agent-Weiterleitung) ist die perfekte Lösung für dieses Problem, und NeoServer bringt sie endlich perfekt auf die iOS-Plattform: Ihr privater Schlüssel verlässt nie Ihr iPhone, aber der Remote-Server kann ihn vorübergehend „ausleihen“, um Code zu pullen, Commits zu pushen oder zum nächsten Host zu springen.
Was SSH Agent Forwarding eigentlich macht
Der SSH-Agent ist ein Prozess, der entschlüsselte private Schlüssel im Arbeitsspeicher hält und in Ihrem Namen auf Authentifizierungsanfragen antwortet. Die Agent-Weiterleitung (in der OpenSSH-CLI durch den Parameter -A repräsentiert) erweitert diese Funktionalität auf übergreifende Verbindungen: Wenn Sie sich von Ihrem iPhone per SSH mit einem Server verbinden und die Weiterleitung aktivieren, erhält der Server einen Socket, der die Authentifizierungsanfragen zurück an den Agenten auf Ihrem Telefon weiterleitet.
Das praktische Ergebnis sieht so aus:
- Auf dem Remote-Server wird die Ausführung von
git clone [email protected]:you/private-repo.giteinfach funktionieren – die Authentifizierungsanfrage von GitHub wird durch den Schlüssel beantwortet, der sicher auf Ihrem iPhone liegt. ssh production-db.internalvon einem Bastion-Host aus funktioniert ebenfalls einwandfrei, ohne dass auf dem Bastion-Host selbst irgendwelche Schlüssel gespeichert werden müssen.- Der private Schlüssel selbst taucht niemals auf dem Remote-Server auf. Weder auf der Festplatte noch im Arbeitsspeicher (abgesehen von den weitergeleiteten Authentifizierungsanfragen). Selbst wenn dieser Server morgen kompromittiert wird, wird der Angreifer keinen Schlüssel finden, den er stehlen könnte.
Warum dies auf iOS besonders wichtig ist
Auf einem Laptop können Sie ssh-agent, ~/.ssh/config und Ihre über Jahre aufgebaute Muscle Memory nutzen. Auf einem Smartphone hingegen unterstützen die meisten SSH-Apps entweder kein Agent-Forwarding oder setzen es extrem ungeschickt um. Das zwingt Nutzer zu unsicheren Abkürzungen, wie das Einfügen von Schlüsseln in das Terminal oder das Speichern von Tokens in Dateien. NeoServer behandelt Agent-Forwarding als Kernfunktion und nicht als nachträglichen Einfall:
- Laden Sie Ihren privaten Schlüssel nur einmal in NeoServer. Er wird verschlüsselt lokal auf dem Gerät gespeichert und durch Face ID / Touch ID geschützt.
- Aktivieren Sie Agent-Forwarding für jede Verbindung einzeln. Wenn Sie eine Verbindung herstellen, leitet NeoServer den In-App-Agenten in die Remote-Sitzung weiter.
- Nutzen Sie
git,scpundsshauf dem Remote-Server genauso wie auf Ihrem Laptop – die weitergeleiteten Anmeldedaten beantworten transparent alle Authentifizierungsanfragen.
Typische Sitzung: Klonen eines privaten Repositories von einer Remote-Entwicklungsmaschine
Dies ist genau der Workflow, für den Agent-Forwarding ursprünglich entwickelt wurde.
- Verbinden Sie sich mit NeoServer auf Ihrem iPhone per SSH mit Ihrem Entwicklungsserver und aktivieren Sie Agent-Forwarding.
- Führen Sie auf diesem Server
git clone [email protected]:yourorg/infra.gitaus. GitHub initiiert eine Authentifizierungsanfrage; diese wird zurück an den Schlüssel auf Ihrem iPhone weitergeleitet und automatisch beantwortet. - Das Repository ist geklont. Während des gesamten Vorgangs wurde Ihr privater Schlüssel, Ihr GitHub-Passwort oder Ihr Personal Access Token niemals auf den Entwicklungsserver geschrieben.
Dieselbe Logik gilt für git pull, git push, die Kommunikation mit privaten Repositories über SSH sowie für den Sprung auf einen zweiten Server. Eine Authentifizierung auf einem Telefon, das sich mit unzähligen Servern verbindet, ohne dass ein einziger Schlüssel kopiert wird.
Kettenweises Springen zwischen Hosts: Vom Bastion-Host ins interne Netzwerk
Die Agent-Weiterleitung lässt sich kombinieren. Aktivieren Sie die Weiterleitung für die Verbindung zum Bastion-Host und verbinden Sie sich dann vom Bastion-Host aus mit einem internen Host – die Authentifizierung für den internen Host wird weiterhin durch den Schlüssel auf Ihrem Telefon beantwortet. Sie genießen die Sicherheit eines Bastion-Hosts (interne Hosts werden nicht direkt nach außen exponiert), ohne die üblichen Kosten der Vorab-Hinterlegung von Anmeldeinformationen auf dem Bastion-Host. NeoServer unterstützt zudem Jump Server-Konfigurationen, sodass der „Sprung über einen Bastion-Host“ selbst als einzelne Verbindungsprofil gespeichert werden kann.
In Kombination mit Mosh und tmux für einen echten mobilen Workflow
Agent-Forwarding dreht sich um die Sicherheit der Anmeldedaten; andere Funktionen von NeoServer kümmern sich um die Verbindungsstabilität:
- Mosh hält die Sitzung bei Netzwerkwechseln aufrecht, sodass ein sich bewegendes iPhone den weitergeleiteten Kanal nicht unterbricht.
tmux/zellijstellen sicher, dass Ihre Shell serverseitig weiterläuft. Langwierigegit clone-Vorgänge oder Bereitstellungen werden auch dann fortgesetzt, wenn das Telefon in Ihrer Tasche in den Ruhezustand geht.- SFTP ermöglicht es Ihnen, die gerade geklonten Dateien direkt in der App zu durchsuchen und zu bearbeiten, inklusive Syntax-Hervorhebung und ohne die App wechseln zu müssen.
Wichtige Sicherheitshinweise
- Die Agent-Weiterleitung ist ein mächtiges Werkzeug, doch diese Macht kommt mit einer eisernen Regel: Aktivieren Sie diese Funktion nur für Server, denen Sie vertrauen. Ein kompromittierter Server mit aktivierter Weiterleitung könnte (während Ihre Sitzung geöffnet ist) Ihren Agenten anweisen, sich gegenüber anderen Hosts zu authentifizieren. Aus diesem Grund hat NeoServer dies als einen pro Verbindung umschaltbaren Schalter konzipiert – nutzen Sie es auf Ihrem eigenen Entwicklungsserver, aber schalten Sie es auf gemeinsam genutzten oder nicht vertrauenswürdigen Hosts aus.
- Ihr privater Schlüssel wird lokal auf Ihrem iPhone gespeichert und ausschließlich über Ihre private iCloud synchronisiert. NeoServer enthält keine Drittanbieter-Analytics oder Werbenetzwerke, und die App ist durch eine Face ID / Touch ID-Sperre geschützt.
- In Kombination mit 2FA (Zwei-Faktor-Authentifizierung) und Authentifizierung über private Schlüssel bildet die Agent-Weiterleitung gemeinsam ein mehrschichtiges Abwehrsystem: Etwas, das Sie besitzen (der Schlüssel auf dem Telefon), eine Fähigkeit, die der Server vorübergehend ausleihen darf (der weitergeleitete Agent), und ein zusätzlicher Authentifizierungsfaktor beim Verbinden.
Für wen ist das geeignet?
- Entwickler, die private Repositories auf Remote-Entwicklungsmaschinen und CI-Servern pullen müssen
- Systemadministratoren, die über einen Bastion-Host zu internen Hosts springen müssen
- Alle, die schon einmal aus „nur dies eine Mal“-Grunden versucht waren (tempted) und ihren privaten Schlüssel via
scpübertragen haben - Teams, die eine „Zero Key Retention“-Strategie (keine Schlüsselablagerung) auf gemeinsam genutzter Infrastruktur anstreben
Wenn Sie in der Vergangenheit bei der Authentifizierung von einem Remote-Server aus immer Kompromisse zwischen Sicherheit und Benutzerfreundlichkeit eingehen mussten, eliminiert SSH Agent Forwarding diesen Spagat – und NeoServer macht all dies direkt auf Ihrem iPhone möglich. Suchen Sie im App Store nach NeoServer oder laden Sie es direkt aus dem App Store herunter.