返回

创建无需身份验证的 Windows Docker 容器,托管 SSH 服务器:分步指南

windows

创建无需身份验证的 Windows Docker 容器托管 SSH 服务器

简介

本文将指导你如何创建一个不需要任何形式身份验证的 Windows Docker 容器,该容器将托管一个 SSH 服务器。这种容器的创建旨在用于封闭的开发环境,强调这不是一个安全且可取的做法。

创建 Dockerfile

首先,你需要创建一个 Dockerfile 来定义你的容器映像:

# escape = `

FROM mcr.microsoft.com/windows/servercore:ltsc2019

USER ContainerAdministrator

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

RUN Set-Service -Name wuauserv -StartupType Manual; `
  Start-Service -name wuauserv; `
  Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*' | Add-WindowsCapability -Online; `
  Set-Service -Name sshd -StartupType 'Automatic'; `
  Start-Service sshd

EXPOSE 22

# 添加以下行以禁用所有身份验证方法
ENV SSH_OPTS="-o PasswordAuthentication=no -o PubkeyAuthentication=no -o KbdInteractiveAuthentication=no"

配置 SSH 服务器

接下来,你需要修改 SSH 配置文件以禁用所有身份验证方法:

  1. 打开 SSH 配置文件:notepad $env:ProgramData\ssh\sshd_config
  2. 找到以下行并替换:
    • PasswordAuthentication yes => PasswordAuthentication no
    • PubkeyAuthentication yes => PubkeyAuthentication no
    • KbdInteractiveAuthentication yes => KbdInteractiveAuthentication no
  3. 保存并关闭文件。

运行容器

现在你可以使用以下命令运行容器:

docker run -it --rm -p 2222:22 <container-image>

结论

通过遵循这些步骤,你将创建成功无需任何身份验证的 Windows Docker 容器,该容器托管一个 SSH 服务器。请记住,这种做法不安全,仅适用于开发目的。在生产环境中,必须使用适当的身份验证机制来保护 SSH 服务器。

常见问题解答

  1. 为什么需要创建这样的容器?

    • 用于在封闭的开发环境中快速设置 SSH 服务器。
  2. 是否安全?

    • 不,这种做法不安全,不应在生产环境中使用。
  3. 如何连接到容器?

    • 使用 SSH 客户端连接到端口 2222。
  4. 如何使用不同的 SSH 端口?

    • Dockerfile 中更改 EXPOSE 22 行,并使用 -p <host-port>:<container-port> 运行容器。
  5. 如何禁用 SSH 服务器?

    • 在容器中运行 net stop sshd 命令。