comments 5

Builtin OpenSSH Client and Server (beta) on Windows 10

Good afternoon Trinidad and Tobago and the rest of the internet. Decided to record a quick video sharing my experience setting up and using the builtin OpenSSH client and server on my Windows 10.

First thing. Check your version of Windows. Search About in Windows Settings. OpenSSH client beta became available in the fall creators update. Next thing is to enable developer mode. This took some time to get completed. It does display a message describing what this does. Then staying in settings you will search for manage optional features. Then click on “Add a feature”.

Search for OpenSSH client (beta) and also OpenSSH server (beta). Click install for these features. You must restart at this point else you will get an error running the ssh command from the command prompt. After restarting open the command prompt or as I did powershell and try the ssh command now. It works and presents you with the available options.

In troubleshooting why I could not connect to localhost with the ssh command, one blog post suggested to turn on and off device discovery. That did not appear to be the problem. I had problems configuring the SSH server (See link to Powershell Team Blog post in the description below). See upcoming slide for the command that was giving the problem. I had to change the execution policy.

Repair-SshdHostKeyPermission -FilePath C:\Windows\System32\OpenSSH\ssh_host_ed25519_key
Repair-SshdHostKeyPermission : The ‘Repair-SshdHostKeyPermission’ command was found in the module ‘OpenSSHUtils’, but the module could not be loaded. For more information, run ‘Import-Module OpenSSHUtils’.
At line:1 char:1
+ Repair-SshdHostKeyPermission -FilePath C:\Windows\System32\OpenSSH\ss …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound:
(Repair-SshdHostKeyPermission:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CouldNotAutoloadMatchingModule

Please pay attention to what is stated in the blog post. First, it’s worth noting again that this OpenSSH for Windows is still very much in beta form. It should only be used in safe, testing environments.

Even after getting the sshd service to run I still could not connect to the server using the builtin OpenSSH client. It could connect from Putty. Turns out the client and server do not share the same default available key exchange algorithms. I tweeted Windows about my problem and if they respond I will share in the description below.

Hello @Windows. How come builtin OpenSSH client and server (on Windows 10) support different sets of key exchange algorithms by default?

Running “ssh localhost” gives

“Unable to negotiate with ::1 port 22: no matching key exchange method found. Their offer”

Share your experience and thoughts with us in the comments below. Thank you for watching.


ssh -Q kex (to list the supported key exchange algorithms)

Using the OpenSSH Beta in Windows 10 Fall Creators Update and Windows Server 1709


  1. Thomas

    How did you manage do get around the “Repair-SshdHostKeyPermission”-error? You wrote something about change the execution policy. Can you please be more specific? The Microsoft blog-post does not say anything. 😦

    I assume it’s an issue with the cheap Win10 (32 bit) Home edition I’m using. But there must be a way to get SSHd running.

  2. Thomas

    Thank you. That did it. 🙂

    I still can’t connect but there’s another copy of SSH (and rsync) of CYGWIN on my computer. This is something I have to look into now. 😉

  3. steve

    I have the same issue. Can connect using putty, but get unable to negotiate error if using windows 10 built in ssh. Please let us know if MS gives you a fix.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s