Browser-only editing
No account required

SSH Config Editor & Generator

Build, parse, validate, and copy a clean SSH config file without remembering every directive. Add Host, HostName, User, Port, and IdentityFile entries visually, then paste the result into your ~/.ssh/config on macOS, Linux, or Windows.

What it checks

  • Missing Host and HostName values
  • Duplicate Host aliases across entries
  • Port numbers outside 1-65535
  • Invalid timeout and keepalive values

Runs in your browser. Your SSH config is not uploaded.

SSH config files normally contain hostnames, usernames, ports, and key file paths, not passwords or private keys. Open DevTools and check Network requests if you want to verify that no config payload leaves the page.

Host editor

Edit fields visually, validate the config, then copy it into ~/.ssh/config.

my-server

Connect later with ssh my-server

Identity

The alias, address, login user, SSH port, and key path for this server.

Host

The short alias you type after ssh. Example: production or api-staging.

HostName

The real server address. Use an IP address or domain name, such as 203.0.113.10.

User

The remote Linux user. Common values are root, ubuntu, deploy, or ec2-user.

Port

The SSH port on the server. The OpenSSH default is 22.

IdentityFile

Path to your private key on this machine. Example: ~/.ssh/id_ed25519.

Connection

Timeouts, keepalives, and compression settings for more reliable SSH sessions.

ServerAliveInterval

Seconds between keepalive messages. Useful for long-running sessions.

ServerAliveCountMax

How many missed keepalive replies are allowed before SSH disconnects.

ConnectTimeout

Seconds to wait while opening the connection before giving up.

Compression

Compress data over the SSH connection. Useful on slow links, unnecessary on most fast links.

Proxy / Jump

Route this host through a bastion server or a custom proxy command.

ProxyJump

A bastion or jump host to route through. Example: bastion.example.com.

ProxyCommand

Custom command used to connect through another transport. Example: ssh -W %h:%p bastion.

What is an SSH config file?

An SSH config file is a plain text file that lets OpenSSH remember connection settings for each server. Instead of typing a long command such as ssh -i ~/.ssh/id_ed25519 [email protected] -p 22, you create a named Host entry in your ssh_config and connect with a short alias.

The user-level SSH configuration file lives at ~/.ssh/config on macOS and Linux, while the system-wide file is at /etc/ssh/ssh_config. Note that sshd_config is the server-side daemon config and is different from the client config this editor builds.

Each Host block can define the real HostName, login User, Port, IdentityFile, keepalive behavior, and ProxyJump or ProxyCommand settings. OpenSSH reads the matching block whenever you run ssh alias.

How to use the generated config

Copy the preview, open ~/.ssh/config, paste the Host entries, and save the file. If the file does not exist yet, create it inside your ~/.ssh directory. Then run chmod 600 ~/.ssh/config so SSH accepts the permissions.

A good Host alias should be memorable and specific, such as production, staging-api, or personal-vps. Avoid duplicate aliases because SSH will use the first matching entry it finds. Test one host at a time with ssh your-alias before replacing a larger existing config.

SSH config file example

A typical ~/.ssh/config entry sets the most common options: HostName, User, Port, and IdentityFile. Use the editor above to build entries visually, or copy this example as a starting point.

# ~/.ssh/config — connect with: ssh production
Host production
    HostName 203.0.113.10
    User ubuntu
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 60

# GitHub SSH config — connect with: ssh github
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_ed25519

# Wildcard match for an internal subnet via a jump host
Host 10.0.*.*
    User admin
    ProxyJump bastion.example.com

Common SSH config options

The most-used directives inside an OpenSSH client config file. Every Host block can override these values for that specific alias.

OptionWhat it does
HostAlias you type after ssh. Wildcards (*, ?) and multiple aliases per block are allowed.
HostNameReal DNS name or IP address SSH connects to.
UserLogin user on the remote server.
PortSSH server port — defaults to 22.
IdentityFilePath to the private key used for authentication, e.g. ~/.ssh/id_ed25519.
ProxyJumpBastion host to tunnel through. Replaces the older ProxyCommand pattern.
ServerAliveIntervalSeconds between keepalive packets — set to 60 to keep idle sessions open.
ForwardAgentSet to yes to forward your SSH agent — useful for git operations on a jump host.

SSH config on macOS, Linux, and Windows

macOS SSH config

The macOS SSH config lives at ~/.ssh/config. macOS ships with OpenSSH pre-installed, so the file is read by the system ssh command immediately.

Linux SSH config

On Linux, the user SSH config file is also ~/.ssh/config. The system-wide defaults sit in /etc/ssh/ssh_config and apply to every user.

Windows SSH config

Windows 10/11 with the OpenSSH client uses C:\Users\you\.ssh\config. The same Host block syntax works in PowerShell, WSL, and Git Bash.