Doku: tmux OSC-11-Leak (Windows Terminal) + pve2 SSH auf Horus.
Issue und Shared-Config für escape-time/O11-Fix; pve2-Keys in horus-root.pub. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -51,6 +51,8 @@ Web-Apps liegen i.d.R. hinter **nginx-proxy-manager** (Ports 80/443).
|
|||||||
| `wg-quick@wg0.service` | WireGuard-Hub |
|
| `wg-quick@wg0.service` | WireGuard-Hub |
|
||||||
| `chrony`, `uptimed`, `docker`, `containerd` | Standard |
|
| `chrony`, `uptimed`, `docker`, `containerd` | Standard |
|
||||||
|
|
||||||
|
**Shell/Tmux:** `/root/.tmux.conf` — OSC-11-Leak-Fix (Windows Terminal + SSH): [../shared/tmux-windows-terminal-fix.md](../shared/tmux-windows-terminal-fix.md)
|
||||||
|
|
||||||
## Updates / Wartung
|
## Updates / Wartung
|
||||||
|
|
||||||
- **watchtower** (`/opt/infrastructure`): aktualisiert per `WATCHTOWER_LABEL_ENABLE=true` **nur** Container mit Label `com.centurylinklabs.watchtower.enable=true` (aktuell faktisch nur sich selbst). mailcow & Stacks sind bewusst ausgenommen.
|
- **watchtower** (`/opt/infrastructure`): aktualisiert per `WATCHTOWER_LABEL_ENABLE=true` **nur** Container mit Label `com.centurylinklabs.watchtower.enable=true` (aktuell faktisch nur sich selbst). mailcow & Stacks sind bewusst ausgenommen.
|
||||||
|
|||||||
@@ -0,0 +1,79 @@
|
|||||||
|
# tmux — OSC-11-Leak im Prompt (Windows Terminal + SSH)
|
||||||
|
|
||||||
|
**Datum:** 2026-06-28
|
||||||
|
**Status:** gelöst
|
||||||
|
**Betroffen:** tmux auf **pve1**, **pve2**, **Horus** · Client: **Windows Terminal** über SSH
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Symptom
|
||||||
|
|
||||||
|
Beim Start von `tmux` oder nach SSH-Verbindung erscheint Text direkt im Prompt, z. B.:
|
||||||
|
|
||||||
|
```
|
||||||
|
11;rgb:0c0c/0c0c/0c0c
|
||||||
|
```
|
||||||
|
|
||||||
|
Wirkt wie Müll oder Injection — ist es **nicht**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Falsche Spur
|
||||||
|
|
||||||
|
- Kein Virus/Malware — keine Sicherheitsmaßnahmen nötig
|
||||||
|
- Nicht fish-spezifisch (tritt in tmux auf, unabhängig von fish/bash)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Echte Ursache
|
||||||
|
|
||||||
|
| Mechanismus | Detail |
|
||||||
|
|-------------|--------|
|
||||||
|
| **OSC 11** | tmux fragt beim Start die Hintergrundfarbe des Terminals ab |
|
||||||
|
| **Antwort** | Terminal antwortet z. B. `rgb:0c0c/0c0c/0c0c` (dunkles Grau) |
|
||||||
|
| **Timing-Leak** | Bei SSH-Latenz + zu kurzem `escape-time` bricht tmux die Escape-Sequenz ab |
|
||||||
|
| **Ergebnis** | Rest landet als scheinbare Tastatureingabe in `stdin` / Prompt |
|
||||||
|
|
||||||
|
Typische Kombination: **Windows Terminal** ↔ **SSH** ↔ **tmux**.
|
||||||
|
|
||||||
|
Auf pve2 war zusätzlich `escape-time 10` — zu aggressiv.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Lösung
|
||||||
|
|
||||||
|
In `/root/.tmux.conf` auf allen betroffenen Hosts:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
set -sg escape-time 50
|
||||||
|
set -as terminal-overrides ',*:O11=@'
|
||||||
|
```
|
||||||
|
|
||||||
|
Referenz: [../shared/tmux.conf](../shared/tmux.conf) · Ausführlich: [../shared/tmux-windows-terminal-fix.md](../shared/tmux-windows-terminal-fix.md)
|
||||||
|
|
||||||
|
**Neu laden:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tmux kill-server
|
||||||
|
# oder in laufender Session:
|
||||||
|
tmux source-file ~/.tmux.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Falls Leak bleibt: `escape-time` schrittweise auf **100** (nicht >500 — ESC-Lag in vim).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verifiziert
|
||||||
|
|
||||||
|
- pve1, pve2, Horus — Config deployed 2026-06-28
|
||||||
|
- User-Bestätigung: Fix funktioniert
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Deploy-Stand
|
||||||
|
|
||||||
|
| Host | Pfad |
|
||||||
|
|------|------|
|
||||||
|
| pve1 `192.168.10.5` | `/root/.tmux.conf` |
|
||||||
|
| pve2 `192.168.10.4` | `/root/.tmux.conf` (`escape-time` 10→50) |
|
||||||
|
| Horus `10.1.1.1` | `/root/.tmux.conf` (neu) |
|
||||||
@@ -25,3 +25,4 @@ Das Handover beschreibt den *aktuellen Übergabestand*. Hier dagegen landen **ab
|
|||||||
| 2026-06-28 | [VM 101 ↔ Horus WireGuard tot (NAT, nicht Keys)](2026-06-28-vm101-horus-wireguard-nat.md) | gelöst |
|
| 2026-06-28 | [VM 101 ↔ Horus WireGuard tot (NAT, nicht Keys)](2026-06-28-vm101-horus-wireguard-nat.md) | gelöst |
|
||||||
| 2026-06-28 | [OPNsense ↔ Horus Tunnel + LAN (Route, Firewall wg_horus, NAT)](2026-06-28-opnsense-horus-wireguard-lan.md) | gelöst |
|
| 2026-06-28 | [OPNsense ↔ Horus Tunnel + LAN (Route, Firewall wg_horus, NAT)](2026-06-28-opnsense-horus-wireguard-lan.md) | gelöst |
|
||||||
| 2026-06-28 | WG-Clients Internet via Horus (UFW wg0→eth0, pixel7 AllowedIPs) | gelöst → [../horus/wireguard-internet-gateway.md](../horus/wireguard-internet-gateway.md) |
|
| 2026-06-28 | WG-Clients Internet via Horus (UFW wg0→eth0, pixel7 AllowedIPs) | gelöst → [../horus/wireguard-internet-gateway.md](../horus/wireguard-internet-gateway.md) |
|
||||||
|
| 2026-06-28 | [tmux OSC-11-Leak im Prompt (Windows Terminal + SSH)](2026-06-28-tmux-osc11-windows-terminal-leak.md) | gelöst |
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ Netz: vmbr0 (WAN), vmbr1 (LAN) — siehe [02_netzwerk.md](02_netzwerk.md)
|
|||||||
|--------|-------|
|
|--------|-------|
|
||||||
| `pve-power-mqtt` | CPU-Leistung → MQTT (kein GPU) |
|
| `pve-power-mqtt` | CPU-Leistung → MQTT (kein GPU) |
|
||||||
| `pveproxy`, `pvedaemon` | Proxmox Web-UI :8006 |
|
| `pveproxy`, `pvedaemon` | Proxmox Web-UI :8006 |
|
||||||
|
| **tmux** | `/root/.tmux.conf` — OSC-11-Fix für Windows Terminal: [../shared/tmux-windows-terminal-fix.md](../shared/tmux-windows-terminal-fix.md) |
|
||||||
|
| **fish** | Default-Shell root |
|
||||||
|
|
||||||
## Power-Monitoring
|
## Power-Monitoring
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ Vollständige GPU-Doku: [09_GPU-Idle-vollstaendig.md](09_GPU-Idle-vollstaendig.m
|
|||||||
| `nvidia-persistenced` | GPU Persistence Mode |
|
| `nvidia-persistenced` | GPU Persistence Mode |
|
||||||
| `pve-power-mqtt` | RAPL + nvidia-smi → MQTT |
|
| `pve-power-mqtt` | RAPL + nvidia-smi → MQTT |
|
||||||
| Proxmox | Web :8006 |
|
| Proxmox | Web :8006 |
|
||||||
|
| **tmux** | `/root/.tmux.conf` — OSC-11-Fix für Windows Terminal: [../shared/tmux-windows-terminal-fix.md](../shared/tmux-windows-terminal-fix.md) |
|
||||||
|
| **fish** | Default-Shell root, Config wie pve1 |
|
||||||
|
|
||||||
## Git / Doku auf diesem Host
|
## Git / Doku auf diesem Host
|
||||||
|
|
||||||
|
|||||||
@@ -8,3 +8,5 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJJvDmBpuduGeVdN92I/tr5YkfmQo5fQ4lI5ZgakRQef
|
|||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIADkU1x7tNWVg30edAF9lU6ik5UFK1I5NScyiQNgcqvc root@docker-pve1
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIADkU1x7tNWVg30edAF9lU6ik5UFK1I5NScyiQNgcqvc root@docker-pve1
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFYVCd+5vmG2L5kKsu8eBmgi4DN9Bj0N/6HBuG7WuMw root@server5
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFYVCd+5vmG2L5kKsu8eBmgi4DN9Bj0N/6HBuG7WuMw root@server5
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHMi3cDD/bZfrDZad0UeYGs1vJl1e3UuDTo2zp92APhm root@server6
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHMi3cDD/bZfrDZad0UeYGs1vJl1e3UuDTo2zp92APhm root@server6
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICXDMnLAJlxd56f6BCJAjVFbaTDcI2lLMOQf1OWCGzaA root@pve2
|
||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC6NPVyFfE1hUimqs18TxjIB72+o59CVVQbJzK0cGmvzROnoR4iGPelwvGFnRUOdUbnGXK5TkQQB6dCnLKHEdULyQ5yXimI37Ywerr5cMorUF3QtWp4WHs2ewPgvdjc0gL0GLlSq7mHQ649PZbhpHo8GlOudsdEVqoxOKcvI/V572huuItTYj0AMnSHglQ1NR0jjeo6ItDblEpU6Anj4knqQYYyOD1CGAJZaKt+2UXsIV3xhkDFhq6Xv83VIj3T4Cju9VsIqFb5eOUUu7er0WpF0rqEqcVliPlq4Ja+eJ1Wl9HnD/5tUeM5yWDHynXTwSlMUCVvnaBtrFbIFhDR9pxWGEnNy6UEjiLRIrYkNMKr+QnzTesB8N8jvfPJoAMcESZAAi675PawbqYxK59ZG+sa/sX83G7GFl5MtB0lUhiyCJPdGUa63QfQw0J8X0dvkZCNcpsDWhbq9B+uu1GL1JS2Rr2uoYSwfIFUiyaQY8KniYlzYb2TyImEQZ7UYkTurIYVutjGJwNqr5KhrZb6flkt/t7fHe/rAScbhm/4lVQFYZYGggitnR6rh262CBl2ML53V1crhLzPjOQWu770y64mZBjf+NwWK84ikPsA0ei2/ph+oWnAkYZVbWVR47AOnLqDed95jJBL5rbAkeSe32MDTPG638pfiBRl/mvPdabZcQ== root@pve2
|
||||||
|
|||||||
@@ -33,7 +33,8 @@ build pve2-lxc-root.pub \
|
|||||||
"$FRAG/admin-mobile.pub"
|
"$FRAG/admin-mobile.pub"
|
||||||
|
|
||||||
build horus-root.pub \
|
build horus-root.pub \
|
||||||
"$FRAG/horus-vps-root.pub"
|
"$FRAG/horus-vps-root.pub" \
|
||||||
|
"$FRAG/host-pve2.pub"
|
||||||
|
|
||||||
build authorized_keys.all.pub \
|
build authorized_keys.all.pub \
|
||||||
"$FRAG"/*.pub
|
"$FRAG"/*.pub
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# tmux — OSC-11-Leak in Windows Terminal (SSH)
|
||||||
|
|
||||||
|
**Stand:** 2026-06-28 · **Status:** gelöst (verifiziert)
|
||||||
|
**Issue:** [../issues/2026-06-28-tmux-osc11-windows-terminal-leak.md](../issues/2026-06-28-tmux-osc11-windows-terminal-leak.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Symptom
|
||||||
|
|
||||||
|
Beim Start von `tmux` oder nach SSH erscheint Text im Prompt, z. B.:
|
||||||
|
|
||||||
|
```
|
||||||
|
11;rgb:0c0c/0c0c/0c0c
|
||||||
|
```
|
||||||
|
|
||||||
|
**Keine Schadsoftware** — das ist eine **Terminal-Kontrollsequenz**, die fälschlich als Tastatureingabe landet.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ursache
|
||||||
|
|
||||||
|
| Teil | Was passiert |
|
||||||
|
|------|----------------|
|
||||||
|
| **OSC 11** | tmux fragt die Hintergrundfarbe des Terminals ab |
|
||||||
|
| **Antwort** | Terminal antwortet z. B. `rgb:0c0c/0c0c/0c0c` (dunkles Grau) |
|
||||||
|
| **Leak** | Bei SSH-Latenz + zu kurzem `escape-time` bricht tmux die Sequenz ab → Rest landet in `stdin`/Prompt |
|
||||||
|
|
||||||
|
Häufig bei: **Windows Terminal** ↔ **SSH** ↔ **tmux** auf Linux-Hosts.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Fix (`~/.tmux.conf`)
|
||||||
|
|
||||||
|
Zwei Maßnahmen (beide auf **pve1**, **pve2**, **Horus** deployed):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ansatz 1: tmux mehr Zeit für Escape-Sequenzen (war auf pve2 nur 10 ms)
|
||||||
|
set -sg escape-time 50
|
||||||
|
|
||||||
|
# Ansatz 2: OSC-11-Hintergrundabfrage deaktivieren (Fallback)
|
||||||
|
set -as terminal-overrides ',*:O11=@'
|
||||||
|
```
|
||||||
|
|
||||||
|
Referenz-Config im Repo: [tmux.conf](tmux.conf)
|
||||||
|
|
||||||
|
**Nach Änderung tmux neu laden:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tmux kill-server # alle Sessions beenden
|
||||||
|
# oder in laufender Session:
|
||||||
|
tmux source-file ~/.tmux.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Falls Leak bleibt: `escape-time` schrittweise auf **100** erhöhen (nicht >500 — spürbarer ESC-Lag in vim).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Deploy-Stand
|
||||||
|
|
||||||
|
| Host | Pfad | Anmerkung |
|
||||||
|
|------|------|----------|
|
||||||
|
| pve1 `192.168.10.5` | `/root/.tmux.conf` | identisch mit Referenz |
|
||||||
|
| pve2 `192.168.10.4` | `/root/.tmux.conf` | `escape-time` von 10→50 |
|
||||||
|
| Horus `10.1.1.1` | `/root/.tmux.conf` | neu angelegt |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Referenzen
|
||||||
|
|
||||||
|
| Thema | Doc |
|
||||||
|
|-------|-----|
|
||||||
|
| pve1 Host | [../pve1/infrastructure-host.md](../pve1/infrastructure-host.md) |
|
||||||
|
| pve2 Host | [../pve2/infrastructure-host.md](../pve2/infrastructure-host.md) |
|
||||||
|
| Horus | [../horus/README.md](../horus/README.md) |
|
||||||
|
| Fish (pve1/pve2) | pve1 `fish-setup.yml`, pve2 `/root/.config/fish/` von pve1 |
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# Referenz: /root/.tmux.conf auf pve1, pve2, Horus
|
||||||
|
# Stand: 2026-06-28 — inkl. Windows-Terminal OSC-11-Fix
|
||||||
|
|
||||||
|
# --- Basics ---
|
||||||
|
set -g mouse on
|
||||||
|
set -g history-limit 50000
|
||||||
|
set -sg escape-time 50
|
||||||
|
|
||||||
|
# --- True color (btop, htop, colored scripts) ---
|
||||||
|
set -g default-terminal "tmux-256color"
|
||||||
|
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||||
|
set -as terminal-overrides ',*:O11=@'
|
||||||
|
set -ag terminal-overrides ",*256col*:RGB"
|
||||||
|
|
||||||
|
# --- Window / pane numbering ---
|
||||||
|
set -g base-index 1
|
||||||
|
setw -g pane-base-index 1
|
||||||
|
set -g renumber-windows on
|
||||||
|
|
||||||
|
# --- Pane splitting (same directory) ---
|
||||||
|
bind | split-window -h -c "#{pane_current_path}"
|
||||||
|
bind - split-window -v -c "#{pane_current_path}"
|
||||||
|
unbind '"'
|
||||||
|
unbind %
|
||||||
|
|
||||||
|
# --- Pane navigation without prefix ---
|
||||||
|
bind -n M-Left select-pane -L
|
||||||
|
bind -n M-Right select-pane -R
|
||||||
|
bind -n M-Up select-pane -U
|
||||||
|
bind -n M-Down select-pane -D
|
||||||
|
|
||||||
|
# --- Window jump without prefix ---
|
||||||
|
bind -n M-1 select-window -t 1
|
||||||
|
bind -n M-2 select-window -t 2
|
||||||
|
bind -n M-3 select-window -t 3
|
||||||
|
bind -n M-4 select-window -t 4
|
||||||
|
bind -n M-5 select-window -t 5
|
||||||
|
|
||||||
|
# --- Activity monitoring ---
|
||||||
|
setw -g monitor-activity on
|
||||||
|
set -g visual-activity on
|
||||||
|
|
||||||
|
# --- Status bar ---
|
||||||
|
set -g status-left "[#S] "
|
||||||
|
set -g status-right "#H %H:%M"
|
||||||
Reference in New Issue
Block a user