一、错误发生的主要原因
你遇到的 SSH 服务启动失败(System error 1067),经过分析,核心原因是 权限不符合 Windows OpenSSH 的安全要求:
-
authorized_keys 权限
-
文件最初新建后,可能设置了 过宽权限(完全控制 F)
-
OpenSSH 要求:
-
只能由用户本人(Administrator)和 SYSTEM 读取
-
不能有其他用户或组(如 Administrators 或 Authenticated Users)的访问
-
-
权限过宽会导致公钥认证加载失败
-
-
host key 权限(主机密钥)
-
日志显示:
WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions for '__PROGRAMDATA__\ssh/ssh_host_rsa_key' are too open
-
原因:
ssh_host_*_key
文件权限过宽(例如 Authenticated Users:(RX)) -
OpenSSH 强制要求主机私钥 仅允许 SYSTEM 和拥有者(Administrators)访问
-
没有 host key,SSH 服务无法启动 → 1067 错误
-
-
sshd_config 指向不存在或权限不对的文件
-
虽然最后你的配置已经没问题,但初期如果
AuthorizedKeysFile
指向错误路径也可能引起启动失败
-
二、完整修复流程整理
1️⃣ 修复 authorized_keys 权限
# 取消继承,设置严格只读权限
icacls "C:\Users\Administrator\.ssh\authorized_keys" /inheritance:r /grant:r "Administrator:R" /grant:r "SYSTEM:R"
✅ 解释:
-
文件仅允许 Administrator 和 SYSTEM 读取
-
严格遵守 OpenSSH 的安全要求
2️⃣ 修复 .ssh 目录权限
# 取消继承,设置目录权限
icacls "C:\Users\Administrator\.ssh" /inheritance:r /grant:r "Administrator:F" /grant:r "SYSTEM:F"
✅ 解释:
-
目录本身可以完全控制(F),允许 SSHD 访问文件
-
但是文件权限必须严格受控
3️⃣ 修复 host key 权限(核心步骤)
进入 host key 所在目录:cd C:\ProgramData\ssh
检查当前权限:icacls ssh_host_*
修复主机私钥权限,只允许 Administrator 和 SYSTEM 完全控制:
icacls ssh_host_rsa_key /inheritance:r /grant:r "Administrators:F" /grant:r "SYSTEM:F"
icacls ssh_host_ecdsa_key /inheritance:r /grant:r "Administrators:F" /grant:r "SYSTEM:F"
icacls ssh_host_ed25519_key /inheritance:r /grant:r "Administrators:F" /grant:r "SYSTEM:F"
icacls ssh_host_dsa_key /inheritance:r /grant:r "Administrators:F" /grant:r "SYSTEM:F"
✅ 解释:
-
删除其他用户组权限(如 Authenticated Users)
-
满足 OpenSSH 启动安全策略
4️⃣ 调试启动 SSH 服务
cd "C:\Windows\System32\OpenSSH"
.\sshd.exe -d
-
-d
打印详细日志 -
确认 host key 加载成功
-
确认监听端口 22 成功
调试成功后,正式启动服务:net start sshd
-
输出显示服务已运行
-
Get-Service sshd
状态为 Running -
netstat -ano | findstr :22
显示端口 22 正在监听
5️⃣ 本地测试 SSH 连接
ssh Administrator@localhost
-
首次连接输入
yes
接受主机指纹 -
输入 Administrator 密码或使用公钥认证登录成功
✅ 说明服务完全恢复正常
三、总结经验教训
-
Windows OpenSSH 对 文件权限非常严格
-
.ssh
目录:Administrator:F + SYSTEM:F ✅ -
authorized_keys
:Administrator:R + SYSTEM:R ✅ -
ssh_host_*_key
:Administrator:F + SYSTEM:F ✅,其他用户或组不可访问
-
-
主机密钥权限过宽是 1067 启动错误的主要原因
-
使用调试模式
.\sshd.exe -d
可以快速定位启动问题 -
该操作 不会影响其他数据库服务器的备份,因为只修改了本机 SSH 服务配置
最后、放心,你这套操作 不会影响其他数据库服务器的备份。
原因如下:
-
操作范围有限
-
你修改的只是 Windows 自己的 SSH 服务和相关密钥文件,主要目录是:
-
C:\Users\Administrator\.ssh
-
C:\ProgramData\ssh
-
-
这些修改只影响本机的 SSH 服务,不会去动其他服务器或备份数据。
-
没有修改备份脚本或备份目标
-
你的 Oracle/SQL Server/MariaDB 等数据库备份是通过其他机制(RMAN、脚本、服务账户等)运行的
-
SSH 配置只会影响远程登录,不改变备份路径、备份账号或文件内容
-
风险点几乎为零
-
如果备份脚本本身使用 SSH 连接到本机做某些操作(例如将备份推送回来),理论上只要 SSH 启动失败或权限不对,才会影响
-
而现在 SSH 服务已经 正常启动并可连接,所以不存在负面影响
✅ 总结:
-
你的 SSH 修复操作是安全的
-
不会影响数据库备份、异地备份或原有服务
-
唯一作用是保证你可以安全使用本机 SSH 和公钥认证