5分钟搞定Docker容器内Windows SSH服务:从启动到远程访问全流程
你是否还在为Docker容器中的Windows系统无法远程管理而烦恼?本文将带你通过3个步骤,在Dockur Windows容器中启用OpenSSH服务,实现像管理物理机一样轻松操作容器内系统。完成后你将获得:容器内SSH服务自动启动、防火墙规则自动配置、宿主机与容器间文件安全传输能力。
准备工作与环境检查
在开始配置前,需确认Docker容器已正确部署并运行。项目核心启动脚本src/entry.sh负责初始化系统环境,通过依次加载src/define.sh定义版本信息、src/mido.sh处理下载逻辑、src/install.sh执行安装流程,最终完成Windows系统的基础部署。
若需查看容器状态,可通过以下命令检查运行中的容器实例:
docker ps | grep dockur/windows
项目支持的Windows版本镜像配置文件存储在assets/目录下,包含从Windows 7到Windows Server 2025的各版本配置,如assets/win10x64.xml对应64位Windows 10系统,assets/win2022.xml对应Windows Server 2022版本。
配置OpenSSH服务自动安装
Dockur Windows容器通过应答文件(Unattend.xml)实现系统自动配置。要在安装阶段集成OpenSSH服务,需修改对应版本的XML配置文件,添加组件安装指令。以Windows 10为例,需编辑assets/win10x64.xml文件,在<components>节点中加入以下配置:
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<CommandLine>powershell -Command "Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0"</CommandLine>
<Description>Install OpenSSH Server</Description>
<Order>1</Order>
<RequiresUserInput>false</RequiresUserInput>
</SynchronousCommand>
</FirstLogonCommands>
</component>
上述配置会在系统首次登录时自动执行PowerShell命令安装OpenSSH服务。对于不同Windows版本,需修改对应版本的XML文件,如Windows Server 2022对应assets/win2022.xml。
修改启动脚本集成SSH服务
容器启动流程由src/entry.sh控制,通过加载src/install.sh完成系统安装。为确保SSH服务在容器启动后自动运行,需修改安装脚本添加服务启动命令。
使用以下命令编辑安装脚本:
sed -i '/finishInstall() {/a \ # Start OpenSSH service\nsed -i "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_config\nsystemctl enable --now sshd' src/install.sh
此修改会在系统安装完成阶段(finishInstall函数)自动启用SSH服务并允许密码认证。关键修改点包括:
- 调整sshd_config配置,允许密码登录
- 设置sshd服务开机自启
- 开放22端口防火墙规则
验证SSH服务与远程连接
容器启动后,可通过Docker日志确认SSH服务状态:
docker logs <container_id> | grep "sshd"
成功启动后,通过宿主机IP和映射端口连接容器:
ssh Administrator@<host_ip> -p <mapped_port>
默认管理员账户密码可在应答文件中配置,如assets/win10x64.xml中的<Password>节点。建议首次登录后立即修改默认密码:
net user Administrator <new_password>
文件传输可通过SCP命令实现:
scp -P <mapped_port> local_file.txt Administrator@<host_ip>:C:\Users\Administrator\Desktop\
常见问题解决
若连接失败,可通过容器控制台检查服务状态:
Get-Service sshd
若服务未运行,手动启动并排查配置:
Start-Service sshd
Get-WinEvent -LogName Application | Where-Object { $_.Source -eq "sshd" }
端口映射问题可通过Docker inspect确认:
docker inspect <container_id> | grep -A 10 "Ports"
确保宿主机防火墙允许对应端口通过,对于云环境还需配置安全组规则。
通过以上步骤,即可在Dockur Windows容器中构建稳定的SSH服务环境,实现容器内系统的便捷管理。完整配置脚本与更多版本支持可参考项目README.md和assets/目录下的版本配置文件。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



