SSH Config Generator

Generate ~/.ssh/config entries visually. Configure hosts, identity files, proxy jumps, and connection options.

About This Tool

The SSH Config Generator is a free browser-based tool that helps you build ~/.ssh/config file entries through a visual interface. Instead of manually writing SSH configuration directives and remembering the exact syntax for each option, this tool lets you fill in form fields and instantly see the generated config output.

SSH config files are powerful but their syntax can be tricky to get right, especially when dealing with advanced features like proxy jumps, port forwarding, or managing multiple identity files. This tool covers the most commonly used directives including Host, HostName, User, Port, IdentityFile, ProxyJump, ForwardAgent, LocalForward, RemoteForward, ServerAliveInterval, StrictHostKeyChecking, AddKeysToAgent, and Compression. You can configure multiple host entries and set wildcard (*) defaults that apply to all connections.

Built-in presets for GitHub, GitLab, Bitbucket, AWS EC2, and bastion/jump host setups let you start from a common pattern and customize it to your needs. This is particularly useful for developers who manage multiple Git hosting accounts or need to connect to cloud instances through intermediate jump servers.

If you work with server infrastructure, you might also find the Nginx Config Generator helpful for building web server configurations, the Git Command Builder for constructing complex Git commands visually, or the Connection String Builder for generating database connection strings.

All processing happens entirely in your browser. Your SSH configuration data, hostnames, and identity file paths never leave your machine. There are no server round-trips, no logging, and no third-party services involved. This makes it safe to use with production server configurations and sensitive infrastructure details. You can copy the output to your clipboard or download it directly as a config file.

How to Use

  1. Select a Preset (GitHub, GitLab, AWS EC2, Bastion, etc.) to load a pre-configured template, or start with Custom for a blank entry.
  2. Fill in the Host Alias field with the name you want to use when connecting (e.g. my-server).
  3. Enter the HostName (IP address or domain), User, and Port (defaults to 22).
  4. Specify an IdentityFile path if you use a specific SSH key, and enable IdentitiesOnly to restrict key usage.
  5. Click Advanced Options to configure ProxyJump, ForwardAgent, port forwarding, keepalive settings, StrictHostKeyChecking, AddKeysToAgent, and Compression.
  6. Expand Host * (Wildcard Defaults) to set options that apply to all hosts, such as default keepalive intervals or AddKeysToAgent.
  7. Click Copy or press Ctrl+Shift+C to copy the generated config. Use Download to save it as a file. Click Add Host to configure additional host entries.

Popular SSH Config Examples

View all SSH config examples →

FAQ

What is an SSH config file?

The SSH config file (~/.ssh/config) is a per-user configuration file for the OpenSSH client. It allows you to define connection parameters for different remote hosts so you can connect with a simple command like 'ssh my-server' instead of typing the full connection details every time. Each Host block in the file specifies settings for a particular host alias or pattern.

Where should I save the generated config?

Save the generated output to ~/.ssh/config on macOS and Linux, or %USERPROFILE%\.ssh\config on Windows. Make sure the file permissions are set correctly: the .ssh directory should be 700 (drwx------) and the config file should be 600 (-rw-------).

What is ProxyJump and when should I use it?

ProxyJump (-J flag) allows you to connect to a target server through one or more intermediate jump hosts (bastion hosts). This is common in enterprise and cloud environments where internal servers are not directly accessible from the internet. You specify the jump host alias in the ProxyJump field, and SSH automatically tunnels through it to reach the target.

How do I use multiple SSH keys for different GitHub accounts?

Create separate Host entries with different aliases (e.g. 'github-personal' and 'github-work'), both pointing to github.com as the HostName. Set each to use a different IdentityFile and enable IdentitiesOnly. Then configure your Git remotes to use the appropriate alias instead of github.com directly.

What does the Host * wildcard block do?

A Host * block matches all hosts and is typically placed at the end of the config file. Any settings defined here act as defaults for all connections unless overridden by a more specific Host block. Common wildcard settings include ServerAliveInterval, AddKeysToAgent, and default identity files.

Is my data safe?

Yes. All config generation runs entirely in your browser using JavaScript. No data is sent to any server. Your hostnames, IP addresses, usernames, and key paths never leave your machine. You can verify this by checking the Network tab in your browser's developer tools while using the tool.

What is the difference between ProxyJump and ProxyCommand?

ProxyJump is the modern, simpler way to specify jump hosts introduced in OpenSSH 7.3. ProxyCommand is the older, more flexible option that lets you specify an arbitrary command to establish the connection. ProxyJump is preferred for standard jump host scenarios, while ProxyCommand is useful for custom proxy setups or when you need to use netcat (nc) or other tools.

Related Tools