What is ~/.ssh/config and why bother with it?
If you connect to more than one server, you probably type something like `ssh -i ~/.ssh/work_key -p 2222 deploy@10.0.0.20` over and over. A single `~/.ssh/config` file turns all of that into `ssh prod`.
This builder writes the file for you. Pick a preset (production server, bastion jump, GitHub, SOCKS proxy, dev container...), tweak the fields, and the right pane shows the exact text to paste into `~/.ssh/config`. Every option has a plain-language hint, no need to remember which capital letters OpenSSH wants.
Everything runs in your browser: no keys involved, nothing uploaded, no account. The output is plain OpenSSH config, identical to what you would write by hand.
How to use it
- Start with a preset (Production server, Bastion, GitHub, SOCKS proxy...). The form fills in sensible defaults you can tweak.
- Type the Host alias (the short name you will type after `ssh`), then the HostName (the real address or IP), User and Port if it is not 22.
- Open Identity and point IdentityFile at your private key, for example `~/.ssh/id_ed25519`. Turn on IdentitiesOnly so SSH does not try every key in your agent.
- Need a jump host? Open Proxy / jump and put `user@bastion` in ProxyJump. SSH will connect through the bastion automatically.
- For port forwarding open Forwarding and add lines like `8080 localhost:80` to LocalForward (expose a remote port on your machine) or RemoteForward (expose a local service on the server).
- Click Copy in the preview pane, paste into `~/.ssh/config` (create the file if it does not exist), and run `chmod 600 ~/.ssh/config` so SSH trusts it.
- Add more entries with the Plus button at the top. The preview combines them all into one file, exactly the order they appear.
When this is useful
Seven concrete situations where a proper `ssh config` saves real time:
- You log into production every day. Instead of `ssh -i ~/.ssh/prod_ed25519 -p 22 deploy@1.2.3.4` you type `ssh prod`. Auto-complete works, history works, scripts that wrap ssh work.
- The target is behind a bastion. Set `ProxyJump` on the internal host and SSH transparently hops through the jump server. No more manual two-step connections.
- You have separate keys for GitHub and GitLab. Pin `IdentityFile` per host so the right key is offered to the right service. Stops the "too many authentication failures" error when SSH tries every key in your agent.
- You need a local port forwarded for development. Add a `LocalForward 5432 localhost:5432` line and your Postgres on the server shows up on your laptop. No VPN needed.
- You want a SOCKS proxy for browsing through a server. `DynamicForward 1080` plus Firefox set to localhost:1080 and your traffic exits from the remote machine. Useful for region-locked dashboards.
- You manage 30+ hosts. Group them with `Host prod-*` patterns (this builder writes a single host at a time, but the file format supports wildcards, paste extra blocks by hand on top).
- You want to expose a local service to a public box (think classic ngrok). `RemoteForward 8080 localhost:3000` on a publicly reachable server and your laptop's port 3000 is reachable at the server on port 8080.