5分钟搞定Docker容器内Windows SSH服务:从启动到远程访问全流程

5分钟搞定Docker容器内Windows SSH服务:从启动到远程访问全流程

【免费下载链接】windows Windows inside a Docker container. 【免费下载链接】windows 项目地址: https://gitcode.com/GitHub_Trending/wi/windows

你是否还在为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服务并允许密码认证。关键修改点包括:

  1. 调整sshd_config配置,允许密码登录
  2. 设置sshd服务开机自启
  3. 开放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/目录下的版本配置文件。

【免费下载链接】windows Windows inside a Docker container. 【免费下载链接】windows 项目地址: https://gitcode.com/GitHub_Trending/wi/windows

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值