Windows系统开启SSH服务端配置
简介
在Windows上开启OpenSSH服务端后,就可以通过远程的ssh来登陆Windows的cmd界面了,然后可以做很多操作了。
OpenSSH 是安全 Shell (SSH) 工具的开放源代码版本,Linux 及其他非 Windows 系统的管理员使用此类工具跨平台管理远程系统。 OpenSSH 在 2018 年秋季已添加至 Windows,并包含在 Windows 10 1809 和 Windows Server 2019 中。
SSH 基于客户端-服务器体系结构,用户在其中工作的系统是客户端,所管理的远程系统是服务器。 OpenSSH 包含一系列组件和工具,用于提供一种安全且简单的远程系统管理方法,其中包括:
- sshd.exe,它是远程所管理的系统上必须运行的 SSH 服务器组件
- ssh.exe,它是在用户的本地系统上运行的 SSH 客户端组件
- ssh-keygen.exe,为 SSH 生成、管理和转换身份验证密钥
- ssh-agent.exe,存储用于公钥身份验证的私钥
- ssh-add.exe,将私钥添加到服务器允许的列表中
- ssh-keyscan.exe,帮助从许多主机收集公用 SSH 主机密钥
- sftp.exe,这是提供安全文件传输协议的服务,通过 SSH 运行
- scp.exe 是在 SSH 上运行的文件复制实用工具
Windows10和Windows11安装自带的OpenSSH服务
安装OpenSSH服务
打开【设置】-【应用】- 选择【管理可选功能】- 点击【添加功能】,下载完成后会自动安装,安装成功会出现在列表中
执行“net start sshd
”命令,启动SSH服务,若要配置开机启动,则按下【win】+R键,输入【services.msc】,搜索到【OpenSSH SSH Server】服务,右键-属性,启动类型选择:【自动】,这样就实现了开机自启,路径:C:\WINDOWS\System32\OpenSSH\sshd.exe
Windows 11添加OpenSSH服务:
登陆
1 | ssh windows的用户名@IP地址 |
注意:这里的用户名可以开启一个cmd窗口来查看用户名,例如如下的内容,用户名就是
lhrxxt
:
1234 Microsoft Windows [版本 10.0.17134.765](c) 2018 Microsoft Corporation。保留所有权利。C:\Users\lhrxxt>本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
ssdh配置文件
在 Windows 中,sshd 默认情况下从 %programdata%\ssh\sshd_config 中读取配置数据,也可以通过使用 -f 参数启动 sshd 来指定不同的配置文件。 如果该文件不存在,则在启动该服务时,sshd 将使用默认配置生成一个文件。
报错:系统无法访问此文件
1 2 | lhr@LHRXXT C:\Users\lhr>wsl -l 系统无法访问此文件。 |
参考:https://answers.microsoft.com/zh-hans/windows/forum/all/ssh%E8%BF%9C%E7%A8%8B%E8%BF%9E%E6%8E%A5%E5%90%AF/47276b13-0261-4b13-bf82-f56abcd0d524 我是Windows11系统,未解决。
命令行安装
在 Windows Server 2019 和 Windows 10 1809 中,OpenSSH 客户端和 OpenSSH 服务器是可单独安装的组件。
安装组件也很简单,若要使用 PowerShell 安装 OpenSSH,请首先以管理员身份启动 PowerShell。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- 查询 Get-WindowsCapability -Online | ? Name -like 'OpenSSH*' -- 安装 Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 #启动服务 Set-Service -Name sshd -StartupType Automatic Start-Service -Name sshd Get-Service -Name sshd #添加防火墙 Get-NetFirewallRule -Name *ssh* New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 |
查询如下:
1 2 3 4 5 6 7 | PS C:\Users\lhrxxt> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*' Name : OpenSSH.Client~~~~0.0.1.0 State : Installed Name : OpenSSH.Server~~~~0.0.1.0 State : Installed |
安装都出现以下结果,表示安装成功:
1 2 3 | Path : Online : True RestartNeeded : False |
其它安装方式
https://github.com/PowerShell/Win32-OpenSSH/releases
https://blog.csdn.net/Tomcow2021/article/details/121537634
乱码问题或Key exchange failed. 或找不到匹配的Key exchange算法
1 2 3 | Key exchange failed. No compatible key exchange method. The server supports these methods: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256 |
解决:
1、用putty的客户端试试
2、用Ubuntu的客户端试试
3、用MobaXterm客户端试试
报错错误代码 = 0x800f0954
在上面安装 OpenSSH.Server 时可能出现的问题:
1 2 3 4 5 6 7 | Add-WindowsCapability : Add-WindowsCapability 失败。错误代码 = 0x800f0954 所在位置 行:1 字符: 1 + Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Add-WindowsCapability], COMException + FullyQualifiedErrorId : Microsoft.Dism.Commands.AddWindowsCapabilityCommand |
解决方法是:
gpedit.msc >> 计算机配置 >> 管理模板 >> 系统 >> 指定可选组件和组件修复的设置:
"已启用" ——> 直接从"Windows Update" 而不是 "Windows Server Update Services (WSUS)" 下载修复内容和可选功能
服务及防火墙设置:
1 2 3 4 5 6 7 8 | #启动服务 Set-Service -Name sshd -StartupType Automatic Start-Service -Name sshd Get-Service -Name sshd #添加防火墙 Get-NetFirewallRule -Name *ssh* New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 |
当安装及配置已经完成后,我们测试使用 ssh 连接 Centos
1 | ssh username@servername |
回答必须是“yes”或“no”。回答 Yes 会将该服务器添加到本地系统的已知 ssh 主机列表中。Windows OpenSSH 服务器使用的默认 shell 是 Windows 命令行解释器。