服务器环境:阿里云 ECS,Windows Server 2019(Build 17763,版本 1809)


一、问题背景

计划在 Windows Server 2019 上启用 SSH 远程管理功能,尝试通过系统自带的 OpenSSH 可选功能进行安装。


二、OpenSSH 自带方案排查过程

1. 安装 OpenSSH 服务器
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

安装结果显示成功(RestartNeeded : False),但启动服务时报错。

2. 启动服务报错
Start-Service sshd

报错:无法启动计算机上的服务 "sshd"

3. 排查步骤与结论
排查项 命令 结果
服务是否存在 Get-Service sshd / Get-Service ssh-agent 服务存在,状态均为 Stopped
手动前台运行 sshd sshd.exe -d 无任何输出
检查退出码 $LASTEXITCODE 返回 -1073741511,即 0xC0000139(STATUS_ENTRYPOINT_NOT_FOUND)
系统版本 [System.Environment]::OSVersion.Version Build 17763(Server 2019 RTM,1809)
补丁安装情况 Get-HotFix 补丁齐全,更新到 2026 年 6 月,排除补丁缺失问题
应用程序/系统日志 Get-WinEvent 无相关报错记录
OpenSSH 目录文件版本 dir C:\Windows\System32\OpenSSH 发现根本原因:sshd.exesftp-server.exessh-shellhost.exe 仍是 2018/9/5 的 RTM 原始版本,而 ssh.exessh-keygen.exescp.exe 等其余组件已更新至 2025/12/11 新版本
4. 根本原因

系统更新时,sshd.exe 等少数几个文件未被替换为新版本,导致新旧版本组件混用,新版本的依赖库中已移除或变更了旧版 sshd.exe 所调用的函数入口,引发 STATUS_ENTRYPOINT_NOT_FOUND 错误,服务无法启动。

5. 修复方案(未验证是否最终解决,供后续参考)
# 1. 卸载 OpenSSH.Server
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# 2. 重启服务器(必须)
Restart-Computer

# 3. 重启后重新安装
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# 4. 检查文件版本是否统一
dir C:\Windows\System32\OpenSSH

# 5. 启动服务
Start-Service sshd
Get-Service sshd

若重装后 sshd.exe 日期依然未更新,需考虑系统组件存储(WinSxS)本身受损,进一步执行:

DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
6. 阿里云 ECS 操作风险提示
  • 重启服务器风险很低,建议在业务低峰期操作,预计中断 2-5 分钟
  • 卸载/重装 OpenSSH 不影响 RDP 远程桌面连接方式,不会导致无法登录服务器
  • 建议操作前在阿里云控制台为系统盘创建快照,便于出问题时快速回滚

三、改用第三方 SSH 软件:Bitvise SSH Server

由于自带 OpenSSH 版本混乱、修复步骤繁琐,改为安装第三方 SSH 软件 Bitvise SSH Server,不依赖系统自带组件,可独立安装使用。

1. 官方下载地址

https://bitvise.com/ssh-server-download

务必从官网下载,安装包带数字签名,避免使用第三方软件站或网盘资源。

2. 版本说明与授权
  • Personal Edition(个人版):免费,但仅限个人非商业用途,不允许在任何类型的组织中使用
  • Standard Edition(标准版):30 天全功能免费评估,企业长期使用需付费授权(约 $99.95/许可证)
  • 企业内部服务器如需长期使用,建议购买正式授权;短期测试可先用评估版
3. 安装步骤
  1. 下载 BvSshServer-Inst.exe 后,右键 → 属性 → 常规选项卡,若有"解除锁定(Unblock)"选项,勾选后确定
  2. 双击运行安装程序,按向导操作,默认勾选安装 SSH Server 组件
  3. 安装过程中选择版本:Personal EditionStandard Edition(企业用途选 Standard Edition)
  4. 其余选项保持默认,完成安装
4. 配置步骤
  1. 打开 Bitvise SSH Server Control Panel
  2. Server 设置:确认/修改监听端口(默认 22,建议改为非默认端口以降低被扫描概率)
  3. Access Control → Users:添加账户
    • Virtual account(虚拟账户):推荐,单独设置用户名密码,不依赖 Windows 系统账户
    • Windows account:直接关联系统账户(如 Administrator),需在设置中勾选允许登录
  4. 点击 Save changes 保存配置
5. 阿里云安全组配置

进入阿里云 ECS 控制台 → 目标实例 → 安全组 → 配置规则,新增入方向规则:

  • 协议:TCP
  • 端口:与 Bitvise 中配置的监听端口一致(默认 22,或自定义端口)
  • 授权对象:建议限制为已知的公网 IP,而非全部放开
6. 连接测试
ssh 账户名@服务器公网IP -p 端口号

四、安全告警记录与处理建议

1. 告警内容(示例)
[时间戳]
Authentication attempt from [来源IP]:[端口] ([地区])
with user name 'administrator' failed.
The user name is not a virtual account and settings do not allow any Windows account to log in.
2. 含义解读

有外部 IP 尝试使用用户名 administrator 登录,因当前 Bitvise 配置未开放任何 Windows 系统账户登录权限,登录被正常拒绝。此记录属于安全机制正常拦截,不代表故障或已被攻破。

3. 风险判断
  • 使用常见用户名(administrator)尝试登录,具有典型的自动化扫描/暴力破解特征
  • 只要 SSH 端口暴露在公网,此类扫描是普遍现象,需持续做好安全加固
4. 安全加固建议
措施 说明
关闭密码登录,仅允许密钥登录 Bitvise 账户认证方式改为 Public key,是最有效的防护手段
修改默认端口 由 22 改为非常见端口(如 2222、22022 等),减少被扫描概率
阿里云安全组限制来源 IP 入方向规则仅放行已知的公网 IP 段,而非全部开放
禁用常见用户名直接登录 不使用 administrator/root 等易猜测用户名,改用自定义账户名
Copyright © https://yan-jian.com 2023 - 2026 All Right Reserved all right reserved,powered by Gitbook更新时间: 2026-08-14 14:34:47

results matching ""

    No results matching ""