# SSH — gemeinsame authorized_keys Zentraler Katalog **öffentlicher** SSH-Keys (keine Private Keys). Stand aus den Hosts exportiert — bei neuem Laptop Key in `fragments/` ergänzen, `rebuild-assembled.sh` laufen lassen. ## Struktur ``` shared/ssh/ ├── fragments/ # Einzelne Key-Gruppen (editierbar) ├── assembled/ # Fertige Sets pro Ziel (generiert) ├── rebuild-assembled.sh # fragments → assembled └── install-authorized-keys.sh ``` | Fragment | Inhalt | |----------|--------| | [fragments/admin-workstations.pub](fragments/admin-workstations.pub) | DESKTOP-H9797I1, DESKTOP-J08NPU2 | | [fragments/admin-laptops-extra.pub](fragments/admin-laptops-extra.pub) | L7L1S5V, OJIEMRE, x380, Security Keys | | [fragments/admin-mobile.pub](fragments/admin-mobile.pub) | JuiceSSH, server6, WEBTOP | | [fragments/host-pve1.pub](fragments/host-pve1.pub) | root@pve1 ed25519 | | [fragments/host-pve2.pub](fragments/host-pve2.pub) | root@pve2 (Ansible / Host-SSH) | | [fragments/legacy-pve1-rsa.pub](fragments/legacy-pve1-rsa.pub) | Altes RSA auf pve1 (Kommentar „root@pve2“) | | [fragments/horus-vps-root.pub](fragments/horus-vps-root.pub) | **Horus VPS** root@10.1.1.1 (via WireGuard) | | [fragments/vm101-to-horus.pub](fragments/vm101-to-horus.pub) | VM 101 → Horus (Automation-Key, Referenz) | ## Horus VPS (WireGuard) | | | |---|---| | **Hostname** | horus.jeanavril.com | | **Öffentlich** | 207.180.222.207 (nur WG, kein SSH von außen) | | **VPN** | VM 101 `wg0` **10.1.1.5** ↔ Horus **10.1.1.1** | | **SSH** | `root@10.1.1.1` — nur von VM 101 (oder anderem WG-Peer) | | **VM-Key** | `jean@DESKTOP-J08NPU2` → `jean@192.168.10.10:~/.ssh/id_ed25519` | Die VM nutzt die Verbindung u.a. für SSL-Zertifikate (NPM `custom_ssl/`). User **`jean`** existiert auf Horus nicht — nur **`root`**. ## Assembled Sets → Ziel | Datei | Deploy auf | User | |-------|------------|------| | [assembled/proxmox-root.pub](assembled/proxmox-root.pub) | pve1 `192.168.10.5`, pve2 `192.168.10.4` | root | | [assembled/vm101-jean.pub](assembled/vm101-jean.pub) | VM 101 Ubuntu `192.168.10.10` | jean | | [assembled/pve2-lxc-root.pub](assembled/pve2-lxc-root.pub) | CT 101 docker, 109 media, 110 AIDEV (pve2) | root | | [assembled/horus-root.pub](assembled/horus-root.pub) | Horus VPS `10.1.1.1` (via WG) | root | | [assembled/authorized_keys.all.pub](assembled/authorized_keys.all.pub) | Referenz — alle Keys vereint | — | ### Matrix (Ist-Zustand) | Host | Empfohlenes Set | Anmerkung | |------|-----------------|-----------| | root@pve1 | proxmox-root | + legacy RSA noch enthalten | | root@pve2 | proxmox-root | ohne legacy RSA (reicht host-pve2) | | jean@192.168.10.10 | vm101-jean | Ansible fish-setup nutzt jean + SSH | | CT 101 (docker) | pve2-lxc-root | Ansible disk-maintenance | | CT 109 (media) | subset: admin + OJIEMRE | aktuell nur OJIEMRE — bei Bedarf volles Set | | CT 110 (aidev) | pve2-lxc-root | Keys vermutlich vorhanden — CT war beim Export **gestoppt**, daher nicht auslesbar | | root@10.1.1.1 (Horus) | horus-root | Nur via WireGuard; VM-Automation-Key: J08NPU2 | ## Neuen Key hinzufügen 1. Passendes Fragment in `fragments/*.pub` editieren (eine Zeile pro Key) 2. `./rebuild-assembled.sh` 3. `./install-authorized-keys.sh ` oder manuell `cat assembled/….pub >> ~/.ssh/authorized_keys` ## Deploy ```bash cd /root/docu/shared/ssh # Proxmox lokal ./install-authorized-keys.sh proxmox-root # Remote ./install-authorized-keys.sh --remote root@192.168.10.4 proxmox-root # VM 101 ./install-authorized-keys.sh vm101-jean # CTs auf pve2 (muss auf pve2 laufen) ./install-authorized-keys.sh pve2-lxc-root ./install-authorized-keys.sh pve2-lxc-root --ct 101 # Horus (von pve1/pve2 aus — springt über VM 101) ./install-authorized-keys.sh horus-root # Vorschau ./install-authorized-keys.sh --dry-run proxmox-root ``` ## Ansible | Host | Ansible-Pfad | Keys | |------|--------------|------| | pve1 | [pve1/ansible/](../../pve1/ansible/) | jean → VM 101 | | pve2 | [pve2/ansible/](../../pve2/ansible/) | root@pve2 → CTs | Symlink auf dem Host: `ln -sfn /root/docu/pve{1,2}/ansible /root/ansible` ## Hinweise - **Nur Public Keys** ins Repo — niemals `id_*` ohne `.pub` oder `.git-credentials-*` - Zwei verschiedene `ssh-rsa … root@pve2`: aktueller Key auf pve2 vs. Legacy auf pve1 (`legacy-pve1-rsa.pub`) - CT muss **laufen**, damit `pct exec` Keys lesen/schreiben kann (110 war beim Export gestoppt)