https://github.com/PowerShell/Win32-OpenSSH/releases
第一步、下载并安装
访问 https://github.com/PowerShell/Win32-OpenSSH/releases 页面,
下载 OpenSSH-Win64.zip 二进制包(或者根据需要下载其他版本)。
将二进制包解压到 C:\Program Files\ 中,文件夹可以不改名。该包中包含客户端(ssh)与服务端(sshd)命令。
第二步、配置客户端
为了能够在cmd中使用客户端命令(比如scp、ssh),我们需要配置环境变量。
在 Windows 7 中,计算机 => 属性 => 高级系统设置 =>环境变量【path】..,这里不再深入展开。
如果仅需使用客户端命令到此步骤即可。
第三步、配置服务端
安装服务
进入安装目录,C:\Program Files\OpenSSH-Win64,
1)执行 powershell -executionpolicy bypass -file install-sshd.ps1 命令安装服务。install-sshd.ps1:存在这个文件
powershell -executionpolicy bypass -file install-sshd.ps1
2)执行 ssh-keygen.exe -A 命令,生成主机密钥,该密钥用于服务启动。
ssh-keygen.exe -A
2.1)错误:RSA Could not save your public key in __PROGRAMDATA__\\ssh/xxxxxxx: No Such file of directory"
解决:手动创建目录:C:\ProgramData\ssh
2.2)防火墙配置
如果开启Windwos防火墙,需要放行某些端口,或者关闭防火墙。
netsh advfirewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
2.3)启动服务
开启其服务:
- net start ssh-agent 没问题
-
- net start sshd 出现服务起不来;
2.4)错误:发生系统错误 1067(System error 1067)
Getting “System error 1067” when trying to start OpenSSH service #1272
Security protection of various files in Win32 OpenSSH
原因:私钥文件由 .\ssh-keygen.exe -A 命令创建,位于__PROGRAMDATA__\ssh目录,所属用户为创建私钥用户。
解决:修改私钥文件的权限,移除当前用户。进入__PROGRAMDATA__\ssh目录:
- icacls ssh_host_dsa_key /setowner system
- icacls ssh_host_ecdsa_key /setowner system
- icacls ssh_host_ed25519_key /setowner system
- icacls ssh_host_rsa_key /setowner system
-
- icacls ssh_host_dsa_key /remove "michael"
- icacls ssh_host_ecdsa_key /remove "michael"
- icacls ssh_host_ed25519_key /remove "michael"
- icacls ssh_host_rsa_key /remove "michael"
或者
OpenSSH的发行包中有解决该权限问题的工具FixHostFilePermissions.ps1,在OpenSSH目录下用power shell执行命令
- cd 'H:\Program Files\openssh'
- .\FixHostFilePermissions.ps1
再次启动服务net start sshd 就没问题了
2.5)配置服务开启动,
- Set-Service sshd -StartupType Automatic,
-
- Set-Service ssh-agent -StartupType Automatic
3 . 效果:
Linux连接windows:
windows连接linux: