环境
Windows 10 专业版 20H2 操作系统内部版本 19042.746
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
描述
在系统 -> 应用 -> 可选功能 -> 添加功能 -> OpenSSH Server / 服务器后,在排查管理员用户,证书密钥登录 Windows,一直提示需要用户密码问题时。
尝试网友提供的 PowerShell ACL 授权方案(文章末尾)。
在操作之前,就已经确认过该文件 administrators_authorized_keys 已经有相关 ACL 权限,但是抱着试一试的心态...
结果不出意外...果然出问题了...
- 只要启动 OpenSSH SSH Server(SSHD) 服务,必定报错:错误 1067
- 恢复 administrators_authorized_keys 文件权限,启动,报错:错误 1067
- 恢复 sshd_config 配置文件,启动,报错:错误 1067
- 卸载,重启,安装 OpenSSH Server / 服务器,重启,启动,报错:错误 1067
解决
1 卸载 OpenSSH Server # 若提示重启,则重启
2 删除以下文件夹 # 需开启显示隐藏的项目:导航栏->查看->打勾:隐藏的项目
C:\Users/用户\用户名\.ssh
C:\ProgramData\ssh
3 安装 OpenSSH Server # 若提示重启,则重启
4 启动 OpenSSH Server 服务
PowerShell ACL 授权代码
该代码只授权了允许 Administrators 与 SYSTEM 完全控制权限。与本身已有权限,缺少一个。
如需恢复,启动继承,删除非继承权限即可。
$acl = Get-Acl C:\ProgramData\ssh\administrators_authorized_keys
$acl.SetAccessRuleProtection($true, $false)
$administratorsRule = New-Object system.security.accesscontrol.filesystemaccessrule("Administrators","FullControl","Allow")
$systemRule = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")
$acl.SetAccessRule($administratorsRule)
$acl.SetAccessRule($systemRule)
$acl | Set-Acl
可能是相同错误
The SSHD service could not be started.
System error 1067 has occurred.
windows 无法启动 open ssh ssh server 错误 1067
其实只需要删除文件C:\ProgramData\ssh,再启动ssh服务端服务,就会重新生成该文件
C:\Users/用户\用户名\.ssh这个文件算是客户端的配置文件了,不是服务端了
这个具体就没往下测了,做这行已经习惯性的删干净再重来,不然老有奇怪的问题。