Skip to content

Windows OpenSSH ​

远程部署通过 Windows OpenSSH 的 SFTP 和 PowerShell 执行,不要求目标机安装 Git。安装期间保留 RDP 会话,确认 SSH 可登录且主机指纹正确后再退出。

目标机安装 ​

在 Windows Server 2019/2022 的管理员 PowerShell 中执行仓库脚本:

powershell
# 仅对当前 PowerShell 进程放宽脚本策略,关闭窗口后自动恢复,不修改机器级策略。
Set-ExecutionPolicy -Scope Process Bypass
# 以管理员权限安装并配置 OpenSSH、22 端口防火墙规则和 sshd 自动启动;会修改目标机系统配置。
& C:\D2113server\deploy\windows\bootstrap-openssh.ps1 -Port 22

没有仓库文件时可使用系统命令:

powershell
# 只读检查 Windows OpenSSH Server 可选组件是否已安装。
Get-WindowsCapability -Online -Name 'OpenSSH.Server*'
# 安装 OpenSSH Server 可选组件;会下载并修改 Windows 系统组件。
Add-WindowsCapability -Online -Name 'OpenSSH.Server~~~~0.0.1.0'
# 把 sshd 设置为随系统自动启动;会修改服务启动方式。
Set-Service sshd -StartupType Automatic
# 立即启动 sshd;会开放配置中的 SSH 监听端口。
Start-Service sshd
# 新建 TCP 22 入站放行规则;执行前应先在云安全组限制部署机来源 IP。
New-NetFirewallRule -Name D2113-OpenSSH -DisplayName 'D2113 OpenSSH deployment' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 22

检查 C:\ProgramData\ssh\sshd_config 至少包含:

text
Port 22
PasswordAuthentication yes
PermitEmptyPasswords no
PubkeyAuthentication yes

修改后执行 Restart-Service sshd。若使用管理员公钥,Windows 默认从 C:\ProgramData\ssh\administrators_authorized_keys 读取,并需限制 ACL 仅 SYSTEM 与 Administrators 可写。

核验身份 ​

目标机显示主机公钥指纹:

powershell
# 只读显示目标机 ED25519 SSH 主机公钥指纹,需与部署机首次连接提示逐字比对。
ssh-keygen -lf C:\ProgramData\ssh\ssh_host_ed25519_key.pub
# 只读检查 sshd 服务运行状态。
Get-Service sshd
# 只读确认本机 TCP 22 已处于监听状态。
Get-NetTCPConnection -LocalPort 22 -State Listen

部署机首次连接时把 SHA-256 指纹与 RDP 屏幕上的结果逐字比较。后台“国度部署”也要求管理员确认该指纹;不要跳过或自动接受未知指纹。

配置部署凭据 ​

凭据只写当前 Windows 用户的受保护环境变量,不写 catalog.json、脚本或文档:

powershell
# 交互式写入当前 Windows 用户的部署密码环境变量;不会把密码写入仓库。
.\scripts\set-windows-deploy-credentials.ps1

脚本配置 D2113_WIN109_DEPLOY_PASSWORD 和 D2113_WIN113_DEPLOY_PASSWORD。重新打开终端后执行:

powershell
# 只读显示目录注册表中的版本和目标主机,用于确认环境变量对应主机。
python .\scripts\d2ctl.py list
# 只验证本地部署必需文件和模板,不连接远端、不执行部署。
python .\scripts\d2ctl.py validate

主机地址、SSH 端口、用户名、安装位置和版本放置只维护在 deploy/realms/catalog.json;密码只由条目中的 passwordEnv 指向环境变量名。

部署后收口 ​

  1. 从部署机确认两台公共 /api/health 均返回 404,再验证论坛、两个独立后台和游戏端口。
  2. 确认运行时业务只使用 80/443 及游戏端口,不依赖 SSH 隧道。
  3. 若部署期结束要关闭 22,先禁用 D2113-OpenSSH 防火墙规则;保留 RDP 回退窗口。
  4. 需要再次发布时临时开启规则,完成后再关闭。不要卸载 OpenSSH 或删除主机密钥,否则指纹会变化。

公网保护

密码登录只能在云安全组限制来源 IP 的部署窗口使用。长期开放时应改用公钥,禁用 PasswordAuthentication,并继续限制源地址。

仅供 CNBN D2 服务管理与开发人员使用