docs(coding-lane): Abschluss - SSH-Zugang zu Gitea, ein Schluessel statt acht Zugangsdaten
Ampel / ampel (push) Successful in 21s

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-08-21 17:13:02 +02:00
co-authored by Claude Opus 5
parent 148a039545
commit 259e1b2ca8
+83
View File
@@ -333,3 +333,86 @@ git remote set-url origin http://192.168.178.153:3000/Hitonabi/mission-control-v
```
Noch **nicht** gemacht — aendert Git-Konfiguration in den Repos des Users.
---
## Abschluss der Coding Lane (21.08.2026, abends)
### Der Zugang: ein SSH-Schluessel, kein Token mehr
**Der Ausloeser:** Mitten in der Sitzung scheiterte ein Push, der eine Stunde
vorher noch ging — `remote: Failed to authenticate user`. Der Git Credential
Manager haelt fuer Gitea ein **OAuth-Token mit einer Stunde Laufzeit**. Damit ist
HTTP fuer einen Agenten, der selbst pushen soll, strukturell ungeeignet.
**Was dabei herauskam:** Giteas SSH war **nie funktionsfaehig**. In der `app.ini`
stand zwar `DISABLE_SSH = false` und `SSH_PORT = 22`, aber im Container gibt es
**keinen `git`-Benutzer** und keine `authorized_keys` — Port 22 gehoert dem
System-sshd. Es sah nur so aus, als koennte man ueber SSH klonen.
**Loesung:** Giteas **eingebauten** SSH-Server eingeschaltet (Port 22 ist belegt,
deshalb 2222). Der verwaltet die Schluessel selbst, direkt aus der Datenbank —
kein `git`-Benutzer, keine `authorized_keys`.
```ini
# /etc/gitea/app.ini, [server] (Sicherung: app.ini.bak-20260821)
SSH_PORT = 2222
SSH_LISTEN_PORT = 2222
START_SSH_SERVER = true
SSH_LISTEN_HOST = 0.0.0.0
```
‼️‼️ **Der SSH-Benutzer heisst `gitea`, NICHT `git`.** Gitea laeuft unter diesem
Namen und weist alles andere ab. Die Fehlermeldung steht nur im Gitea-Log, nicht
beim Client — ssh sagt bloss `Permission denied (publickey)`:
```
Invalid SSH username git - must use gitea for all git operations via ssh
```
**Auf dem PC** (`~/.ssh/config`) — noetig, weil hier **acht** Schluessel liegen
und ssh sonst der Reihe nach durchprobiert, bis Gitea abbricht:
```
Host 192.168.178.153 gitea gitea.heimnetz
HostName 192.168.178.153
Port 2222
User gitea
IdentityFile ~/.ssh/id_general
IdentitiesOnly yes
```
Der Schluessel `id_general` ist in Gitea hinterlegt (Nr. 3) — **derselbe, mit dem
du auf Box, pve und Arcane kommst.** Von acht Zugangsdaten auf einen.
Alle sieben PC-Repos stehen jetzt auf
`ssh://gitea@192.168.178.153:2222/Hitonabi/<repo>.git`.
Das TTT2-Projekt bleibt unberuehrt — es haengt an einer anderen Domain und ist
als „Finished" markiert.
### Gemessen, nicht angenommen
| Test | Ergebnis |
|---|---|
| `ssh -T gitea` | „Hi there, Hitonabi! You've successfully authenticated with the key named id_general" |
| Push aus PowerShell | 8 Commits, `7c23ebf..25dbfb2` |
| **Push aus dem Agenten** | durchgelaufen, **keine Passwortabfrage** |
| Erzwungener Push aus dem Agenten | vom Werkzeug-Zaun abgewiesen |
| `push-und-sync.ps1` komplett | Commit → Push → Box zieht nach |
### Der Sonderfall MC2
`projekte-sync` zieht `mission-control-v2` **absichtlich nicht** — die Box
bedient daraus den laufenden Dienst auf `:9001`. Nach einem Push steht dort
weiter der alte Commit, und das ist richtig so. Das Live-Deployment braucht
seinen eigenen, bewussten Schritt. Alle anderen Projekte werden normal gezogen.
### Fallen fuer das naechste Mal
- **`sed` mit `$` und `\n` ueber PowerShell zerlegt sich.** Der erste Anlauf,
die `app.ini` zu aendern, lief ins Leere und die Datei blieb unveraendert —
ohne Fehlermeldung. In einzelne Ersetzungen zerlegen und **danach nachsehen**.
- Ein Dienst-Neustart nach einer Konfig-Aenderung ist noch keine Bestaetigung:
Gitea startete brav neu — mit der alten Datei.
- Acht SSH-Schluessel auf dem PC sind selbst ein Befund. `IdentitiesOnly yes`
ist Pflicht, sonst bricht die Gegenseite vorher ab.