For an embarrassingly long time I was typing full hostnames and usernames every time I SSHed into anything. Then I finally wrote an SSH config and realized I'd been wasting about thirty seconds per session times approximately a lot of sessions.
# global defaults
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519
# project server — ssh prod instead of [email protected]
Host prod
HostName 123.45.67.89
User deploy
IdentityFile ~/.ssh/deploy_key
# jump through bastion to internal hosts
Host internal-*
ProxyJump bastion.example.com
User ubuntu
The ServerAliveInterval setting keeps connections from dropping when you're idle, which is the thing that was annoying me most. The AddKeysToAgent means you only enter your passphrase once per session.
The ProxyJump directive is the part I wish I'd known sooner. Instead of SSHing to the bastion and then SSHing again from there, a single ssh internal-worker01 handles the hop transparently. No more two-step sessions.