Writing ~/.ssh/config only helps if the key is accepted at the other end. Both SSH options now offer to create an ed25519 key when none exists — the same choice deploy_qemu.ensure_ssh_key makes, so created and adopted VMs share one key — and to push it with ssh-copy-id. Hosts that already accept the key are skipped, tested with PasswordAuthentication=no: without it ssh would fall back to the password and every host would look like it already had the key. ssh-copy-id runs on the real terminal rather than through captured output, otherwise its password prompt would be invisible. In the recursive walk the key is deployed BEFORE probing each level, not at the end. The probe uses BatchMode, so an un-keyed machine answers nothing and the level below it stays invisible — deploying afterwards would find only the first level. virt-manager, when installed, gets the machines that actually run libvirt added to its connection list, so their nested VMs can be driven from the local GUI. The URI uses the SSH ALIAS rather than the raw IP: qemu+ssh goes through the ssh binary, hence ~/.ssh/config, so the alias already carries both the address and the ProxyJump — a bare IP could not reach a nested VM at all. Connections live in GSettings, not a file. The list is READ first and written back merged, so nothing already configured is lost, and a failed read (no schema, no virt-manager) simply means the whole feature stays silent — no prompt, no write. virt-manager rewrites its settings when it exits, so a warning says to restart it. Verified: key generated with 0600 on the private half and reused on the second call; ssh-copy-id issued only for hosts that need it; the recursive walk deploying level by level before each probe; GSettings merge keeping existing URIs and skipping the write when nothing is missing; « @as [] », a populated list and a missing schema all parsed correctly. Caveat: virt-manager is not installed on this machine, so the absent path was exercised for real and the write path only against a stubbed gsettings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| database_manager.py | ||
| kdbx_manager.py | ||
| logo_ascii.txt | ||
| migration_form.py | ||
| qemu_deploy_form.py | ||
| qemu_install_monitor.py | ||
| README.base.md | ||
| README.fr.md | ||
| README.md | ||
| source_todo.sh | ||
| todo.json | ||
| todo.py | ||
| todo_example.json | ||
| todo_file_browser.py | ||
| todo_i18n.py | ||
| todo_prefs.py | ||
| todo_telemetry.py | ||
| todo_upgrade.py | ||
| version_manager.py | ||
TODO is an assistant robot to use ERPLibre
Execute it with ./script/todo/todo.py or make todo.
For a new project, copy todo_example.json to private/todo/todo_override.json | private/todo/todo_override_private.json and edit it.