Setting up SSH on Windows without duplicating your work

Most Windows machines end up with two SSH clients: the one Microsoft ships and the one you installed. That is fine, as long as each has a clear job and you know which agent holds your keys.

The built-in OpenSSH client

It is an optional feature that is enabled by default on current builds. Its per-user config lives at %USERPROFILE%\.ssh\config and uses the same syntax as on any other platform:

Host jump
  HostName jump.example.com
  User admin
  IdentityFile ~/.ssh/id_ed25519

After that, ssh jump is all you type.

Turn on the agent service

Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

The service stores the unlocked key for the Windows session, which is the OpenSSH equivalent of Pageant.

Keep PuTTY and OpenSSH in their lanes

  • PuTTY for saved GUI profiles, serial consoles and Telnet devices.
  • OpenSSH for scripting, Git and anything expecting a config file.
  • Convert keys once in PuTTYgen so the same identity works in both.
  • Run one agent at a time to avoid confusing failures.

Client settings worth standardizing

  • ServerAliveInterval 30 in the OpenSSH config, matching PuTTY's keepalive.
  • StrictHostKeyChecking left on — silencing it defeats the purpose.
  • A per-environment key rather than one key for everything.

Questions people ask about this

Which client does Git for Windows use?
It depends on the GIT_SSH environment variable — either its bundled OpenSSH or Plink from PuTTY. Check that variable when Git authentication behaves differently than your terminal.
Can I use one key file with both clients?
Yes. Keep the OpenSSH format as the original and export a .ppk copy from PuTTYgen.

Independent guide. Software names belong to their respective developers; always download from the vendor's own site. Back to all Windows SSH guides.