S∆SS.

S∆SS Studio Notes · Fernzugriff · Nº 04

Fernzugriff — 04 Was Blogger nicht erzählen

Blogs zeigen fertige Oberflächen vor. Was auf dem Weg dorthin abriss, schreiben sie nicht: Der Autor ist schon hindurchgekommen oder hat es nie erlebt. Dieses Kapitel macht das Gegenteil. Es zerlegt tatsächlich erlebte Fehler einzeln in Symptome, Ursachen und Abhilfe. Dinge, die bei der Suche selten auftauchen.

§ 00 · Vor dem Aufbau – Zuerst den Ordner verschieben

Zuerst eine Empfehlung, die diesem ganzen Kapitel vorangeht. Alle acht folgenden Fallen sind real, und ich bin in jede getreten. Wenn du Remote-Zugriff noch nicht eingerichtet hast und dein Projekt noch jung ist, erledige vorher eines: Verschiebe den Arbeitsordner mit dem Code vom Schreibtisch weg. Das empfehle ich dringend.

Der Grund ist einfach. Der Mac sperrt und verwaltet Ordner wie Schreibtisch und Dokumente gesondert. Die siebte und achte Falle entstehen, weil der Code ausgerechnet in diesen gesperrten Ordnern liegt. Außerhalb entstehen beide gar nicht erst. Ich ging umgekehrt vor: alles aufbauen, lange benutzen, beide Fallen erwischen und erst dann umziehen. Nach dem Umzug lösten sich die Blockaden sofort.

Allerdings ist der Umzug mit dem Ziehen des Ordners nicht erledigt. Eine Regel genügt: Nur Dinge, in denen die alte Adresse als Text fest eingebaut ist, brechen. Wo die alte Adresse als Text bleibt, bricht genau diese Stelle; Verbindungen, die ohne diese Adresse auskommen, bleiben intakt. Deshalb die folgenden vier Punkte einzeln suchen, korrigieren und erneut messen. Nichts zieht automatisch mit. Darum ist der Umzug am Anfang billiger: Es sind noch wenige Adressen fest eingebaut.

NACH DEM UMZUG VON HAND ANPASSEN · WAS → SONST → PRÜFUNG
WasOhne AnpassungAnpassen und womit prüfen
Alte Adressen in Einstellungen und Dateien für automatische PrüfungenAutomatische Prüfungen und Werkzeuge laufen lautlos nicht mehr. Nicht einmal ein Fehler erscheint, sodass man es spät merkt – der gefährlichste der vier Punkte.Jede alte Adresse suchen und ersetzen. Prüfen, bis die Suche nach der alten Adresse null Treffer ergibt.
Die von git gespeicherten Arbeitsordnerpositionengit sucht am alten Ort und scheitert. Bei mehreren Worktrees betrifft das alle.Den Befehl zur Reparatur registrierter Positionen einmal ausführen. Anschließend alle Worktrees auflisten und jede Adresse visuell prüfen.
Build-CacheIm früher gebauten Ergebnis steckt die alte Adresse fest; Build oder Server zeigen an den falschen Ort.Nicht reparieren, sondern verwerfen: Cache löschen und neu bauen. Prüfen, dass im Neubau keine alte Adresse mehr steckt.
Adressen in Dokumenten und NotizenDie Anleitung für Menschen zeigt auf tote Adressen. Die Maschine funktioniert, der Mensch irrt umher.Suchen und korrigieren. Prüfung: null Suchtreffer. Historische Aufzeichnungen, die ihren damaligen Stand behalten sollen, bleiben erhalten.

§ 01 · In Erfolgsgeschichten fehlt dieser Moment

In den ersten Tagen des Remote-Aufbaus blockierten mich drei Dinge: verstümmelte koreanische Schrift, abgewiesene Verbindungen und zuvor funktionierende Programme, die nicht mehr öffneten. Alle drei hatten nichts mit meinen Programmierfähigkeiten zu tun, und keine Lösung erschien sofort in der Suche.

Das hat einen Grund. Blogs beschreiben den Happy Path, den vom Anfang bis Ende reibungslosen Weg. Anfänger stürzen tatsächlich daneben, an Fehlerstellen. In Erfolgsgeschichten fehlen diese Stellen. Der Autor hat sie längst überwunden und vergessen oder hatte Glück und erlebte sie nie.

Deshalb beschreibt dieses Kapitel nur Fehlschläge. Es folgen Fallen, in die ich tatsächlich getreten bin, jeweils mit Symptom, Ursache und Abhilfe. Wenn du an derselben Stelle stehen bleibst, sieh vor der Suche zuerst in diese Tabelle.

§ 02 · Acht Fallen

Die folgenden acht Fallen erwischt man bei Remote-Entwicklung leicht. Die ersten sechs begegnen beim Aufbau, meist Eigenheiten eines Werkzeugs oder Kollisionen zweier Werkzeuge. Die letzten beiden, sieben und acht, sind anders. Sie treten nicht beim Aufbau auf: Die fertig eingerichtete, gut laufende Verbindung bricht eines Morgens plötzlich ab, obwohl ich nichts angefasst habe. Kennt man die Ursache, umfasst die Abhilfe meist eine Zeile. Nur bei der letzten nicht.

ACHT FALLEN · SYMPTOM → URSACHE → ABHILFE
№Falle (Symptom)Ursache und Abhilfe
1Koreanische Schrift ist verstümmelt und lässt sich nicht eingeben (CJK)Zuerst CJK. Chinesisch, Japanisch und Koreanisch (Chinese, Japanese, Korean) verwenden Zeichen aus mehreren Bytes; Zeichenbestandteile verbinden sich zu einem Zeichen, das zwei Bildschirmspalten belegt. Für Befehlszeilenwerkzeuge, die für einen Buchstaben pro Byte gedacht waren, bleibt CJK seit Langem die schwierigste Schrift. Selbst Werkzeuge brillanter Teams garantieren keine perfekte koreanische Eingabe. Deshalb entstehen Störungen an zwei Stellen. ① Die entfernte Maschine: Das verbundene Fenster (SSH) reicht die Spracheinstellungen des Tablets nicht weiter, sodass die Maschine auf den Standard „nur Einbytezeichen“ zurückfällt. Abhilfe: In die beim Verbinden zuerst automatisch ausgeführte Startdatei eine Zeile schreiben, die „Ich benutze UTF-8“ festlegt. Diese Datei heißt Profil: mein persönliches Vorbereitungsskript, das bei jeder Verbindung zuerst gelesen wird. ② Das Fenster in meiner Hand: Wird koreanische Eingabe trotz reparierter Gegenseite verschluckt, reicht die Terminal-App des Tablets die Zeichenzusammensetzung der koreanischen Eingabemethode nicht korrekt weiter. Das ist häufig und passiert auch bei Spitzenapps. Abhilfe: In den App-Einstellungen CJK- oder Eingabeoptionen suchen und einschalten; Termius besitzt sie. Beide Stellen müssen angepasst werden, damit Koreanisch vollständig ankommt.
2Tastenkürzel streiten um dieselbe EingabeUrsache: Das Netz, das den Bildschirm hält (tmux), und das KI-Werkzeug darin nutzen dasselbe Tastenkürzel. Abhilfe: Eines der beiden Kürzel ändern und die Kollision beseitigen. Eine Zeile in der tmux-Konfiguration genügt.
3Ein Programm öffnet sich halb und meldet einen FehlerUrsache: Eine zuvor gestartete Instanz desselben Programms ist nicht gestorben und blockiert als Geist den Neustart. Abhilfe: Den Geisterprozess finden und beenden oder das gesamte Netz einmal neu starten. Eine Neuinstallation ist unnötig.
4Die Anmeldeadresse wird als „ungültig“ gemeldetUrsache: Manche Fenster, etwa Termius, zeigen Anmeldeadresse und Einmalcode in einer gemeinsamen Zeile. Wer alles kopiert, zerstört die Adresse. Abhilfe: Adresse und Code von Hand trennen, nur die Adresse im Browser öffnen und den Code gesondert eingeben.
5Nach einem Ortswechsel scheitert die VerbindungUrsache: Nach dem Netzwerkwechsel braucht das private Netzwerk Tailscale einige Sekunden, um den neuen Weg aufzubauen. Ein Verbindungsversuch dazwischen scheitert. Abhilfe: Der Fehlschlag ist kein Defekt. Nach einigen Sekunden erneut versuchen. Schneller geht es, wenn man zuerst die Tailscale-App weckt.
6Die Angst, bei Verbindungsabbruch die Arbeit zu verlierenUrsache: Direkt am Fenster hängende Arbeit stirbt, wenn das Fenster schließt. Abhilfe: Hängt sie von Anfang an am Netz tmux, läuft sie auch bei Trennung in der Maschine weiter. Wieder verbinden und anhängen, dann ist der bisherige Arbeitsplatz zurück.
7Ein gestern zugänglicher Ordner verweigert plötzlich den ZugriffDieser Fall ist anders. Nicht beim Aufbau, sondern eines Morgens bricht der fertig eingerichtete Zugriff. Symptom: Die Verbindung und Anmeldung zur Maschine gelingen eindeutig. Beim Zugriff auf den Arbeitsordner mit dem Code auf dem Schreibtisch erscheint aber „Operation not permitted“. Ursache: Ein Sicherheitsupdate, das Apple nachts still einspielt. Der Mac aktualisiert vor Tagesanbruch selbstständig das System; auf dieser Maschine ist tatsächlich eine Installation um drei Uhr morgens protokolliert. Dabei wird die Berechtigung „Festplattenvollzugriff“ des Torwächterprogramms für Remote-Verbindungen zurückgesetzt und entfernt. Genauer betrifft es die startende Komponente sshd-keygen-wrapper. Der Mac sperrt sensible Ordner wie Schreibtisch und Dokumente gesondert; diese Sperre ist der Mechanismus des Festplattenvollzugriffs. Um sie remote zu erreichen, braucht der Torwächter eine ausdrückliche Erlaubnis. Abhilfe: Am Bildschirm des Mac [Systemeinstellungen → Datenschutz & Sicherheit → Festplattenvollzugriff] öffnen, sshd-keygen-wrapper in der Liste finden und den Schalter wieder einschalten. Fehlt der Eintrag, über [+] hinzufügen. Im Dateidialog über [Gehe zu → Gehe zum Ordner] (Command+Shift+G) /usr/libexec öffnen und die Datei sshd-keygen-wrapper darin wählen. Danach die Remote-Verbindung einmal trennen und neu verbinden; der Ordner öffnet sich. Das besonders Bösartige: Gestern ging es, heute nicht, obwohl man nichts geändert hat. Selbst per Suche ist die Ursache schwer zu erreichen. Nur wer Remote-Zugriff versteht, bricht an diesem Morgen nicht zusammen. Ein Weg vermeidet diese Falle von Anfang an: die Empfehlung in §00 am Kapitelanfang, den Codeordner aus den gesperrten Ordnern herauszunehmen.
8Trotz eindeutig eingeschalteter Berechtigung wird weiter abgewiesenDu hast wie in Falle 7 den Festplattenvollzugriff eingeschaltet und den aktiven Schalter mit eigenen Augen gesehen. Trotzdem erscheint weiter „Operation not permitted“. Hier brechen die meisten zusammen: Nach der sichtbaren Bestätigung scheint nichts mehr übrig, das man versuchen könnte. Es gibt drei Ursachen, und alle drei sind unsichtbar. ① Eine neu eingeschaltete Berechtigung erreicht bereits laufende Programme nicht. Sie behalten das beim Start erhaltene Urteil. Für ein neues Urteil muss das Programm von seiner Wurzel aus neu starten. ② Der einzuschaltende Eintrag trägt nicht den für Menschen vertrauten Namen. Mehrere ähnliche Namen stehen nebeneinander, doch entscheidend ist der tatsächliche Dateiname des ausführbaren Programms. Auf dieser Maschine waren claude und Claude eingeschaltet, die tatsächliche ausführbare Datei claude.exe aber nicht. Bis sie eingeschaltet war, half kein Neustart. ③ Die Wurzel liegt je nach Werkzeug anderswo. Bei Programmen im Netz tmux ist es der Besitzer des Netzes, bei eigenständig außerhalb laufenden Programmen das Programm selbst. Der Auslöser lag in der Nacht: Das KI-Werkzeug aktualisierte sich vor Tagesanbruch und startete sich dreimal neu. Dabei entstanden Äste, die ihre alten Wurzeln verloren hatten. Bei der Erlaubnis zum Ordnerzugriff fragt der Mac nach der Programmlinie, aus der die Anfrage stammt. Ist der Vorfahr bereits tot, kann er überhaupt kein Urteil bilden und weist die Anfrage unbedingt ab. Die Abhilfe hat zwei Ebenen. Der sichere Weg ohne einen einzigen Befehl: die Maschine aus- und einschalten. Alle Wurzeln entstehen neu, sodass die drei Ursachen gemeinsam verschwinden. Der präzise Weg: Zuerst den tatsächlichen Namen der ausführbaren Datei in der Berechtigungsliste finden und einschalten. Danach das Programm von der Wurzel aus neu starten. Lief es im Netz, mit tmux kill-server den Netzbesitzer ersetzen und neue Sitzungen erstellen. Achtung: Alle offenen Sitzungen schließen sich; zuerst die laufende Arbeit prüfen. Lief es allein außerhalb, das Programm vollständig beenden und neu starten. Diese Falle hat noch eine besonders bösartige Seite: Ein Symptom bedeutet nicht eine Ursache. Ich ersetzte den Netzbesitzer, sah meine Seite wiederaufleben und erklärte alles für geheilt. Ein anderer Ast außerhalb des Netzes blieb noch zwanzig Minuten blockiert. Ein wiederbelebter Ast bedeutet nicht, dass die Maschine gesund ist. Diese Falle hat dieselbe Wurzel wie Nummer 7: Hätte der Codeordner gemäß §00 außerhalb der gesperrten Ordner gelegen, wäre keine von beiden entstanden.

§ 03 · Warum das den Unterschied macht

Die acht Fälle wirken klein: verstümmelte koreanische Schrift, kollidierende Tastenkürzel, nicht öffnende Programme, heute gesperrte Ordner von gestern und verweigerter Zugriff trotz Erlaubnis. Keine glänzenden Probleme. Aber genau hier geben Anfänger Remote-Entwicklung auf. Nicht weil der Code schwer wäre, sondern weil der Zugang blockiert ist.

KI-Werkzeuge können den Code schreiben. Doch vor „Ich kann mich nicht verbinden“, „Koreanisch ist verstümmelt“ und „Das Programm öffnet nicht“ halten Menschen an, suchen und hören auf, wenn sie nichts finden. Noch vor Arbeitsbeginn scheitern sie am Erreichen der Maschine.

Deshalb hält diese eine langweilige Tabelle deine Arbeit länger am Leben als zehn glänzende Codezeilen. Wer weiß, wie man die Maschine erreicht, arbeitet länger.

Beitrag lesen: sass.studio.