# Přístup k workspace z VSCodium na Androidu

| Položka | Hodnota |
|---|---|
| **Stav** | Ověřený stav hosta + návrh variant. Žádná změna na hostu nebyla provedena. |
| **Datum** | 2026-10-03 |
| **Host** | `virtualmintcb26` (`100.109.5.5` Tailscale, `10.0.2.15` LAN) |
| **Workspace** | `/home/oem/CyberBrain26-v4` |
| **Rozsah** | Návod pro připojení klienta VSCodium/Code-OSS běžícího na Androidu. Dokument není bezpečnostní certifikací. |

> **Pravidlo pro čtení.** Sekce [1](#1-ověřený-stav-hosta) obsahuje výstupy skutečně spuštěných read-only příkazů.
> Sekce [2](#2-neověřeno-a-hypotézy) odděluje to, co **nešlo ověřit** a co je pouze odhad.
> Každý krok označený **[SCHVÁLENÍ]** mění bezpečnost hosta (spuštění služby, práce s klíči, otevření
> portu) a **nesmí se provést bez výslovného souhlasu uživatele**.

## 0. Klíčové zjištění: „pokračovat v existující relaci“ nejde

| Tvrzení | Status |
|---|---|
| Remote-SSH **nikdy** nepřebere běžící lokální relaci VSCodium; otevře nový proces serveru na hostu a nové okno s vlastním stavem okna/workspace. | **Ověřeno obecně** (chování Remote-SSH), **nezávisle na tomto hostu neověřeno**. |
| Na hostu běží SSH relace `oem@pts/1` z `100.110.170.117`. | **Ověřeno** (`who`) |
| K této relaci se nelze připojit zvenčí: `tmux` ani `screen` nejsou nainstalovány. | **Ověřeno** (`command -v`, `tmux ls`) |
| Služby na loopbacku (Kilo gateway `127.0.0.1:4096`, Ollama `127.0.0.1:11434`, session VSCodium `127.0.0.1:35549`) nejsou z Androidu dosažitelné. | **Ověřeno** (`ss -tlnp`) |

Důsledek: „stejná relace“ je technicky dosažitelná jen přes `code-server` v prohlížeči
(varianta B) — a i tam jde o **novou** relaci v prohlížeči, ne o okno lokálního VSCodium.

## 1. Ověřený stav hosta

| Oblast | Příkaz | Zjištění |
|---|---|---|
| `sshd` | `systemctl is-active ssh`; `pgrep -a sshd` | `active`; `sshd: /usr/sbin/sshd -D [listener]` |
| Balík SSH | `dpkg -l \| grep openssh-server` | `openssh-server 1:9.6p1-3ubuntu13.19` |
| Port 22 | `ss -tlnp` | `0.0.0.0:22` a `[::]:22` — **poslouchá na všech rozhraních**, nejen loopbacku |
| code-server | `dpkg -l`; `code-server --version` | nainstalován: `code-server 4.136.2` (`with Code 1.136.1`), binárka `/usr/bin/code-server`, knihovna `/usr/lib/code-server` |
| code-server běží? | `systemctl is-active code-server`; `pgrep -a code-server` | `inactive`, proces neběží, **žádný port 8080/8443 neposlouchá** |
| code-server jako služba | `systemctl is-enabled code-server`; existence unit souborů | `not-found`; chybí `/etc/systemd/system/code-server.service`, `/usr/lib/systemd/system/code-server.service` i `/etc/code-server` |
| `code-oss-server` | `command -v code-oss-server`; `ls /usr/lib/code-server/bin` | **není přítomen** — v `/usr/lib/code-server/bin` je jen `code-server`. Varianta „klasický code-oss-server“ na tomto hostu není dostupná. |
| SSH adresář | `ls -la ~/.ssh` | existuje: `authorized_keys`, `config`, `known_hosts`, `id_ed25519`, `id_ed25519_lab`, `id_ed25519_cyberbrain26` (+ `.pub`) |
| Klíče | — | **Obsah klíčů, `authorized_keys` i `config` nebyl přečten ani zkopírován** (záměrně, jen názvy souborů a práva). |
| Anomálie práv | `ls -la ~/.ssh` | `id_ed25519*` mají vlastníka `oem` ale **skupinu `srp`**, zatímco `config`/`authorized_keys` skupinu `oem`. Význam neověřen. |
| Síť | `ip -4 addr`; `hostname -I` | `10.0.2.15/24` (`enp0s3`, dynamická), `100.109.5.5/32` (`tailscale0`), IPv6 `fd7a:…` |
| Tailscale | `tailscale status` | připojený; v tailnetu **online Android `redmi-13-1` = `100.110.170.117`**, druhý Android `redmi-13` offline 65 dní |
| Tailscale health | `tailscale status` | „Subnet routing is enabled, but IP forwarding is disabled“ |
| Firewall | `ufw status` (přes `sudo -n`) | `Stav: neaktivní` (běžný `ufw status` bez rootu selhal: vyžaduje root) |
| Repo | `git status --porcelain`; `ls docs` | V repozu není žádná konfigurace pro VSCodium/code-server/Android; `docs/` existuje, `docs/howto/` vznikl pro tento dokument |

## 2. Neověřeno a hypotézy

| Téma | Proč neověřeno / co je jen hypotéza |
|---|---|
| `PasswordAuthentication`, `PermitRootLogin`, `AllowTcpForwarding`, `AllowUsers` | `sshd -T` selhal (exit 1, prázdný výstup — nejspíš vyžaduje root). **Účinná konfigurace sshd není ověřena.** Nepředpokládej, že hesla jsou zakázaná ani povolená. |
| Obsah `~/.ssh/config` a `authorized_keys` | Záměrně nečteno (credential materiál). Nelze tvrdit, že klíč odpovídá `redmi-13-1`. |
| `10.0.2.15` | **Hypotéza:** adresa v rozsahu `10.0.0.0/24` s bránou `10.0.2.255` a `noprefixroute` připomíná virtualizovanou/NAT síť (QEMU/KVM). Je-li to virtuální stroj, LAN adresa není z reálné sítě dosažitelná a je nutné použít Tailscale IP. |
| Dosažitelnost z telefonu | **Hypotéza:** telefon je ve stejném tailnetu, takže cesta vede přes `100.109.5.5`. Z reálné LAN (`10.0.2.15`) dostupnost neověřena. |
| Funkčnost `100.110.170.117` jako zdroj | Zdroj aktivní SSH relace odpovídá tailnet adrese Android zařízení. Přímé potvrzení, že relaci otevřil telefon, **není doloženo**. |
| Využití `code-server` portu 8080/8443 | Nebyly testovány handshake — porty jsou volné podle `ss`, ale konfigurace neexistuje. |
| Výkon přes Tailscale | Neo měřeno; `IP forwarding is disabled` se týká subnet routingu, ne běžného přímého spojení peer→peer. |

## 3. Varianta A — Remote-SSH z VSCodium na Androidu

**Princip:** telefon (VSCodium) se připojí přes SSH na host a VSCodium si na hostu zvedne vlastní
server. Kód zůstává na hostu, běží v kontextu hosta.

| Krok | Obsah | Co už je |
|---|---|---|
| A1 | Na telefonu nainstalovat **VSCodium** a rozšíření **Remote - SSH** | hotovo uživatel, mimo host |
| A2 | V telefonu připravit **SSH privátní klíč** (`ssh-keygen`) a veřejný klíč `*.pub` | **[SCHVÁLENÍ]** — jde o generování a uchování credential materiálu na zařízení |
| A3 | Doplnit veřejný klíč do `~/.ssh/authorized_keys` na hostu | **[SCHVÁLENÍ]** — trvalá změna přístupu na hostu; navíc doba platnosti klíče není nijak omezena |
| A4 | Cíl: `Host cyberbrain26 / HostName 100.109.5.5 / User oem` | `sshd` už běží a `22/tcp` už poslouchá na `0.0.0.0` a `[::]` — **nemusí se nic otevírat ani restartovat** |
| A5 | Připojit se a otevřít `/home/oem/CyberBrain26-v4` | — |
| A6 | Případná optimalizace: `ServerAliveInterval`, `ForwardAgent no` | **[SCHVÁLENÍ]** — změna konfigurace klienta/hosta |

Výhody: nejjednodušší, žádné nové balíky na hostu, žádná nová síťová služba.
Nevýhody: **nepokračuje v běžící lokální relaci**; telefon potřebuje editorový server stažený poprvé
(síťový přenos); klíč na telefonu mimo hranice hostu.

## 4. Varianta B — code-server v prohlížeči

**Princip:** na hostu běží `code-server`, telefon (nebo jiný prohlížeč) otevře stránku.
Existuje jediná instalovaná varianta tohoto typu, ale **neběží**.

| Krok | Obsah | Co už je |
|---|---|---|
| B1 | Rozhodnout bind: `127.0.0.1` (přístup jen přes SSH tunel) nebo `100.109.5.5` | — |
| B2 | Spustit `code-server --bind-addr … --auth …` | **[SCHVÁLENÍ]** — spuštění nové síťové služby |
| B3 | Vytvořit konfiguraci a systemd jednotku pro trvalý provoz | **[SCHVÁLENÍ]** — trvalá změna hosta; jednotka i `/etc/code-server` dnes **neexistují** |
| B4 | Přihlášení: heslo nebo `--auth none` | **[SCHVÁLENÍ]** — `--auth none` by byl neautentizovaný přístup ke kódu a shellu; nedoporučuje se |
| B5 | Na telefonu prohlížeč → adresa na Tailscale IP, nebo přes `ssh -L` tunel | při variantě s tunelem jde změna jen na straně telefonu |

Výhody: jediné přihlášení, stejná instance napříč telefonem a počítačem, žádné rozšíření na telefonu.
Nevýhody: web UI řeší autentizaci jinak než SSH; stav okna se stále nepropojí s lokálním VSCodium.

## 5. Varianta C — Termux (nejmenší zásah do hosta)

**Princip:** Termux na telefonu jen spustí `ssh` (případně `ssh … code`), editace řeší terminálový
nebo vzdálený editor. **Na hostu se nemění nic.**

| Krok | Obsah | Co už je |
|---|---|---|
| C1 | Nainstalovat Termux (+ `pkg install openssh`) | hotovo uživatel, mimo host |
| C2 | Připojit se `ssh oem@100.109.5.5` | `sshd` běží, port 22 otevřený — **hotovo na hostu** |
| C3 | Přihlášení klíčem | **[SCHVÁLENÍ]** — přenos/generování klíče a zápis do `authorized_keys` na hostu |
| C4 | Práce v `vim`/`nano` nebo `ssh -t … code` | `tmux`/`screen` chybí, takže sdílení relace není možné |

Výhody: nulové změny na hostu, nejmenší attack surface, funguje přes Tailscale.
Nevýhody: méně pohodlná práce s více soubory; žádný GUI.

## 6. Doporučení po zodpovězení tří otázek

1. **Reuse relace, nebo stačí otevřít složku?** Pokud stačí otevřít složku, jde o variantu A
   nebo C s nulovými změnami na hostu kromě případného `authorized_keys`.
2. **Stejná síť, nebo vzdáleně?** Při vzdáleném přístupu jednoznačně Tailscale (`100.109.5.5`),
   ne `10.0.2.15`.
3. **Je instalace balíků / trvalých služeb na hostu přípustná?** Pokud ne, varianta B odpadá
   a zůstává A nebo C.

## 7. Audit: co tento dokument nezměnil

Žádné balíky nebyly instalovány, žádná služba nebyla spuštěna ani zastavena, `sshd` nebyl
restartován ani překonfigurován, žádný port nebyl otevřen, žádný klíč nebyl vygenerován
ani přečten. Změna je jediná: nový soubor `docs/howto/VSCODIUM_ANDROID_ACCESS.md`.
`src/`, `tests/`, `.github/`, `.kilo/kilo.jsonc` a `pyproject.toml` zůstaly nedotčené.