# Add keys the agent, duh.
AddKeysToAgent yes

# macOS stuff, I don't even know.
IgnoreUnknown UseKeychain
UseKeychain yes

# Make known_hosts actually readable.
HashKnownHosts no

# Don't verify localhost, duh.
NoHostAuthenticationForLocalhost yes

# Add server keys to known_hosts silently, I never bother to verify them anyway.
StrictHostKeyChecking no

# Actually, scratch that. Don't use known_hosts at all, what is this even for? Kappa implied.
UserKnownHostsFile /dev/null

# Keep ssh connections alive. Wonder why this isn't default.
ServerAliveCountMax 3
ServerAliveInterval 15

# Exit if port forwarding fails. Again, why is this not a default?
ExitOnForwardFailure yes

# Includes must go above Host blocks.
# Source: https://superuser.com/a/1162392
Include config_local config_my_hosts

# Defaults for github.com, etc.
Host github.com bitbucket.org gitlab.com
    User git

# Alternatives for github.com, etc. when port 22 is blocked:
Host alt-bitbucket
    User git
    Hostname altssh.bitbucket.org
    Port 443
Host alt-github
    User git
    Hostname ssh.github.com
    Port 443
Host alt-gitlab
    User git
    Hostname altssh.gitlab.com
    Port 443

# AUR:
Host aur.archlinux.org
    User aur
    IdentityFile ~/.ssh/aur