Question:
I’m a host Windows 10 (version 20H2, build 19042.746), with WSL2 installed (like here: https://learn.microsoft.com/en-us/windows/wsl/install-win10).
After I installed the OpenSSH (like here: https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse and https://www.hanselman.com/blog/the-easy-way-how-to-ssh-into-bash-and-wsl2-on-windows-10-from-an-external-machine), with these commands in PowerShell as admin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*' Name : OpenSSH.Client~~~~0.0.1.0 State : Installed Name : OpenSSH.Server~~~~0.0.1.0 State : NotPresent > Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 > Start-Service sshd > Get-Service sshd > Set-Service -Name sshd -StartupType 'Automatic' > New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\bash.exe" > Get-WindowsCapability -Online | ? Name -like 'OpenSSH*' Name : OpenSSH.Client~~~~0.0.1.0 State : Installed Name : OpenSSH.Server~~~~0.0.1.0 State : Installed |
I checked that the Windows Firewall includes service OpenSSH as an active and open Inbound Rule.
I checked with telnet too:
1 2 3 |
> telnet localhost 22 SSH-2.0-OpenSSH_for_Windows_7.7 |
Until here seems all is ok!
Now the problem happens, running the command also in PowerShell (or in cmd):
1 2 3 |
> ssh localhost Connection reset by ::1 port 22 |
Did anyone have the same problem (running in: Windows 10 + PowerShell/cmd + OpenSSH)?
Does anyone know why this problem happened?
Does anyone know how to solve this problem?
Thanks!
============= MORE INFOS =============
Follow another command to debug:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
> sshd -d debug1: sshd version OpenSSH_for_Windows_7.7, LibreSSL 2.6.5 debug1: key_load_private: Permission denied debug1: key_load_public: Permission denied Could not load host key: __PROGRAMDATA__\\ssh/ssh_host_rsa_key debug1: key_load_private: Permission denied debug1: key_load_public: Permission denied Could not load host key: __PROGRAMDATA__\\ssh/ssh_host_ecdsa_key debug1: key_load_private: Permission denied debug1: key_load_public: Permission denied Could not load host key: __PROGRAMDATA__\\ssh/ssh_host_ed25519_key sshd: no hostkeys available -- exiting. |
The __PROGRAMDATA__
seems to refer to Windows environment variable %PROGRAMDATA%
, that point to C:\ProgramData
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
> ls C:\ProgramData\ssh Diretório: C:\ProgramData\ssh Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 25/01/2021 19:59 logs -a---- 27/01/2021 02:03 2252 sshd_config -a---- 25/01/2021 19:59 668 ssh_host_dsa_key -a---- 25/01/2021 19:59 628 ssh_host_dsa_key.pub -a---- 25/01/2021 19:59 227 ssh_host_ecdsa_key -a---- 25/01/2021 19:59 200 ssh_host_ecdsa_key.pub -a---- 25/01/2021 19:59 432 ssh_host_ed25519_key -a---- 25/01/2021 19:59 120 ssh_host_ed25519_key.pub -a---- 25/01/2021 19:59 420 ssh_host_rsa_key.pub |
Follow the content from sshd config:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
> cat C:\WINDOWS\System32\OpenSSH\sshd_config_default # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: #HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key #HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key #HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key #HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging #SyslogFacility AUTH #LogLevel INFO # Authentication: #LoginGraceTime 2m #PermitRootLogin prohibit-password #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 #PubkeyAuthentication yes # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys #AuthorizedPrincipalsFile none # For this to work you will also need host keys in %programData%/ssh/ssh_known_hosts #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! PasswordAuthentication yes #PermitEmptyPasswords no #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no #PermitTTY yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #PermitUserEnvironment no #ClientAliveInterval 0 #ClientAliveCountMax 3 #UseDNS no #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path #Banner none # override default of no subsystems Subsystem sftp sftp-server.exe # Example of overriding settings on a per-user basis #Match User anoncvs # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server Match Group administrators AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys |
Answer:
I was experiencing same issue and fixed. Need to move extracted Open-SSH folder to Program Files and it works properly.