From ba42ce3f9d1f14ab51d2abf726638e0cbb5610d3 Mon Sep 17 00:00:00 2001 From: Robert Rapp Date: Mon, 12 Oct 2026 19:19:58 +0200 Subject: [PATCH] =?UTF-8?q?scripts:=20Hostschl=C3=BCssel=20der=20GPU-VMs?= =?UTF-8?q?=20=C3=BCber=20den=20Gast-Agenten=20eintragen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- platform/proxmox/scripts/trust-vm-hostkeys.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100755 platform/proxmox/scripts/trust-vm-hostkeys.sh diff --git a/platform/proxmox/scripts/trust-vm-hostkeys.sh b/platform/proxmox/scripts/trust-vm-hostkeys.sh new file mode 100755 index 0000000..0d40a01 --- /dev/null +++ b/platform/proxmox/scripts/trust-vm-hostkeys.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# Hostschlüssel der GPU-VMs über den qemu-guest-agent lesen und in ~/.ssh/known_hosts eintragen +# (läuft auf ops, im Verzeichnis platform/proxmox/tofu). Vertrauensweg: Proxmox-API/Agent statt +# ssh-keyscan übers Netz. Wartet vorher, bis cloud-init in der VM fertig ist. +set -euo pipefail + +tofu output -json gpu_vms | python3 -c ' +import json, sys +for name, v in json.load(sys.stdin).items(): + if v["ipv4"]: + print(name, v["node"], v["vmid"], v["ipv4"]) +' | while read -r name node vmid ip; do + ssh -n "$node" "qm guest exec $vmid --timeout 900 -- cloud-init status --wait" >/dev/null || true + key=$(ssh -n "$node" "qm guest exec $vmid -- cat /etc/ssh/ssh_host_ed25519_key.pub" \ + | python3 -c 'import json, sys; print(json.load(sys.stdin)["out-data"].strip())') + ssh-keygen -R "$ip" >/dev/null 2>&1 || true + echo "$ip $key" >> ~/.ssh/known_hosts + echo "$name ($ip): $(ssh-keygen -lf <(echo "$ip $key") | awk '{print $2}')" +done