「OpenSSH」- 在 Windows 中,安装 OpenSSH 服务

  CREATED BY JENKINSBOT

问题描述

在 Windows 7 上,我们需要安装 OpenSSH 客户端以及服务端,即实现:
1)在 cmd 中使用 ssh 命令,而无须安装第三方远程客户端;
2)在 Windows 7 中运行 sshd 服务,在其他主机中通过 ssh 远程 Windows 7 主机。

第一步、下载并安装

访问 GitHub/PowerShell/Win32-OpenSSH/Releses 页面,下载 OpenSSH-Win64.zip 二进制包(或者根据需要下载其他版本)。

将二进制包解压到 C:\Program Files\ 中,并以 OpenSSH and Windows 7 命名。该包中包含客户端(ssh)与服务端(sshd)命令。

第二步、配置客户端

为了能够在 cmd 中使用客户端命令(比如scp、ssh),我们需要配置环境变量。

在 Windows 7 中,计算机 => 属性 => 高级系统设置 => 环境变量…,这里不再深入展开。

如果仅需使用客户端命令到此步骤即可。

第三步、配置服务端

安装服务

进入安装目录,C:\Program Files\OpenSSH,执行 powershell -executionpolicy bypass -file install-sshd.ps1 命令安装服务。

执行 .\ssh-keygen.exe -A 命令,生成主机密钥,该密钥用于服务启动。

防火墙配置

如果开启 Windwos 防火墙,需要放行某些端口,这里不再深入展开。

启动服务

启动服务:net start ssh-agent,net start sshd

配置服务开启动,Set-Service sshd -StartupType Automatic,Set-Service ssh-agent -StartupType Automatic

验证服务有效

在任务管理器中查看sshd与ssh-agent进程是否存在,以确定服务是否正常启动。

然后,使用 ssh 命令远程该主机,以验证能够通过 ssh 访问 Windows Shell。

常见错误汇总

RSA Could not save your public key in __PROGRAMDATA__\\ssh/xxxxxxx: No Such file of directory”

问题描述:
在执行 .\ssh-keygen.exe -A 命令时,产生该错误。

问题原因:
目录__PROGRAMDATA__\ssh不存在,需要手动创建。

解决办法:
创建__PROGRAMDATA__\ssh目录。

发生系统错误 1067(System error 1067)

Getting “System error 1067” when trying to start OpenSSH service #1272
Security protection of various files in Win32 OpenSSH

问题描述:
在使用 net start sshd 命令启动服务时,产生该错误。

问题原因:
私钥文件由 .\ssh-keygen.exe -A 命令创建,位于__PROGRAMDATA__\ssh目录,所属用户为创建私钥用户。

权限错误导致该问题发生,私钥文件权限必须归属于 SYSTEM 用户。

解决办法:
修改私钥文件的权限,移除当前用户。进入__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 "your username"
icacls ssh_host_ecdsa_key /remove "your username"
icacls ssh_host_ed25519_key /remove "your username"
icacls ssh_host_rsa_key /remove "your username"

参考文献

Installing OpenSSH on Windows 7
Start or stop Windows service from command line (CMD)