From 63213a4bc3e2c23a1a0343e7b07a6d72c738cfa9 Mon Sep 17 00:00:00 2001 From: MichaelFisher1997 Date: Mon, 9 Mar 2026 03:16:18 +0000 Subject: [PATCH] fix: ignore stale SSH host keys for ephemeral homelab VMs Fresh destroy/recreate cycles change VM host keys, which was breaking bootstrap after rebuilds. Use a disposable known-hosts policy in the controller SSH options so automation does not fail on expected key rotation. --- nixos/kubeadm/bootstrap/controller.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/nixos/kubeadm/bootstrap/controller.py b/nixos/kubeadm/bootstrap/controller.py index 7912ea5..0095e8b 100755 --- a/nixos/kubeadm/bootstrap/controller.py +++ b/nixos/kubeadm/bootstrap/controller.py @@ -110,7 +110,9 @@ class Controller: "-o", "IdentitiesOnly=yes", "-o", - "StrictHostKeyChecking=accept-new", + "StrictHostKeyChecking=no", + "-o", + "UserKnownHostsFile=/dev/null", "-i", self.ssh_key, ] @@ -172,14 +174,7 @@ class Controller: return last def prepare_known_hosts(self): - ssh_dir = Path.home() / ".ssh" - ssh_dir.mkdir(parents=True, exist_ok=True) - (ssh_dir / "known_hosts").touch() - run_local(["chmod", "700", str(ssh_dir)]) - run_local(["chmod", "600", str(ssh_dir / "known_hosts")]) - for ip in self.node_ips.values(): - run_local(["ssh-keygen", "-R", ip], check=False) - run_local(f"ssh-keyscan -H {shlex.quote(ip)} >> {shlex.quote(str(ssh_dir / 'known_hosts'))}", check=False) + pass def prepare_remote_nix(self, ip): self.remote(ip, "sudo mkdir -p /etc/nix") -- 2.49.1