From kube-dc
SSH into a Kube-DC virtual machine using the project's auto-generated SSH keypair. Covers extracting keys, finding VM IP, and connecting via internal IP or external FIP/EIP.
npx claudepluginhub kube-dc/kube-dc-public --plugin kube-dcThis skill uses the workspace's default tool permissions.
- VM must be running with `qemu-guest-agent` active
Deploy a virtual machine in a Kube-DC project with SSH access, cloud-init configuration, and optional external IP exposure. Supports Ubuntu, Debian, CentOS, Fedora, Alpine, openSUSE, Gentoo, and Windows images.
Create, start, stop, restart, or SSH into a headless Windows 11 VM running in Docker with KVM acceleration. Use for Windows tasks on Linux hosts without GUI.
Builds Linux kernels from source, creates Fedora rootfs with mkosi, and boots QEMU VMs supporting custom NUMA/CXL/NVDIMM topologies. Manages VMs via MCP tools for SSH access, testing, and lifecycle control.
Share bugs, ideas, or general feedback.
qemu-guest-agent active{org}-{project}kubectl get secret ssh-keypair-default -n {project-namespace} \
-o jsonpath='{.data.id_rsa}' | base64 -d > /tmp/vm_ssh_key
chmod 600 /tmp/vm_ssh_key
Internal IP (from VMI status):
kubectl get vmi {vm-name} -n {project-namespace} \
-o jsonpath='{.status.interfaces[0].ipAddress}'
Floating IP (if FIP exists):
kubectl get fip -n {project-namespace}
EIP + LoadBalancer (if SSH service exists):
kubectl get svc {vm-name}-ssh -n {project-namespace} \
-o jsonpath='{.status.loadBalancer.ingress[0].ip}'
ssh -i /tmp/vm_ssh_key {os-user}@{ip-address}
| OS | User |
|---|---|
| Ubuntu | ubuntu |
| Debian | debian |
| Windows | kube-dc |
rm /tmp/vm_ssh_key
ssh-keypair-default secret (keys: id_rsa, id_rsa.pub)authorized-keys-default secret (key: admin)authorized-keys-default via accessCredentials~/.ssh/authorized_keys# Add your own public key to the authorized-keys secret
kubectl edit secret authorized-keys-default -n {project-namespace}
# Add a new data key with your base64-encoded public key
Or override accessCredentials in the VM manifest to point to a custom secret.
After SSH connection:
# 1. Verify SSH key was extracted (before connecting)
test -f /tmp/vm_ssh_key && echo "Key exists" || echo "Key missing"
ls -la /tmp/vm_ssh_key
# Expected: -rw------- (600 permissions)
# 2. Verify VM has IP and guest agent is running
kubectl get vmi {vm-name} -n {project-namespace} -o jsonpath='{.status.interfaces[0].ipAddress}'
# Expected: non-empty IP address
kubectl get vmi {vm-name} -n {project-namespace} -o jsonpath='{.status.conditions[?(@.type=="AgentConnected")].status}'
# Expected: True
# 3. Test SSH connectivity (non-interactive)
ssh -i /tmp/vm_ssh_key -o StrictHostKeyChecking=no -o ConnectTimeout=5 {os-user}@{ip} echo "SSH OK"
# Expected: "SSH OK"
Success: Key extracted, VM has IP, AgentConnected=True, SSH returns output. Failure:
chmod 600