## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# SSH Block

The `ssh` block tells vmctl how to connect to the guest for provisioning and `vmctl ssh`.

## Syntax

    ssh {
        user "ubuntu"
        private-key "~/.ssh/id_ed25519"
    }

## Fields

### user

    user "ubuntu"

The SSH username to connect as. This should match the user created by cloud-init.

Default: `"vm"` (used when the ssh block exists but `user` is omitted)

### private-key

    private-key "~/.ssh/id_ed25519"

Path to the SSH private key for authentication. Path is resolved relative to the VMFile directory.

Default: When omitted, vmctl uses the auto-generated key if available, or falls back to standard keys in `~/.ssh/`.

## When to Include

The `ssh` block is required if you want to:

- Use `vmctl ssh` with VMFile-based name inference.
- Run provisioners (they connect via SSH).

If you only use imperative commands and don't need provisioning, the ssh block is optional.