Defaults

Can be overridden by group or individual host entries.

Supports all options that SSH config supports.

Defaults will be copied into each generated Host block.

---
default:
  User: ben
  IdentityFile: ~/.ssh/id_rsa

If we combine this with our example in Introduction:

The following yaml:

---
global:
  UseRoaming: "no"

default:
  IdentityFile: ~/.ssh/id_ed25519
  User: ben

local:
  Hosts:
    nas: 192.168.0.42
    pihole:
      User: pi
      HostName: 192.168.0.2

remote:
  Config:
    Port: 42022
  Hosts:
    web1: web.example.org
    db: db.example.org

Will produce this config:

# local
Host nas
    IdentityFile ~/.ssh/id_ed25519
    User ben
    HostName 192.168.0.42

Host pihole
    IdentityFile ~/.ssh/id_ed25519
    User pi
    HostName 192.168.0.2

# remote
Host web1
    IdentityFile ~/.ssh/id_ed25519
    User ben
    Port 42022
    HostName web.example.org

Host db
    IdentityFile ~/.ssh/id_ed25519
    User ben
    Port 42022
    HostName db.example.org

Host *
    UseRoaming no