问题描述
在 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目录:
#!/bin/sh 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"
参考文献
WikiNotes/安装配置客户端及服务端(Windows 7)
Installing OpenSSH on Windows 7
Start or stop Windows service from command line (CMD)