返回
创建无需身份验证的 Windows Docker 容器,托管 SSH 服务器:分步指南
windows
2024-03-04 21:28:51
创建无需身份验证的 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 配置文件以禁用所有身份验证方法:
- 打开 SSH 配置文件:
notepad $env:ProgramData\ssh\sshd_config
- 找到以下行并替换:
PasswordAuthentication yes
=>PasswordAuthentication no
PubkeyAuthentication yes
=>PubkeyAuthentication no
KbdInteractiveAuthentication yes
=>KbdInteractiveAuthentication no
- 保存并关闭文件。
运行容器
现在你可以使用以下命令运行容器:
docker run -it --rm -p 2222:22 <container-image>
结论
通过遵循这些步骤,你将创建成功无需任何身份验证的 Windows Docker 容器,该容器托管一个 SSH 服务器。请记住,这种做法不安全,仅适用于开发目的。在生产环境中,必须使用适当的身份验证机制来保护 SSH 服务器。
常见问题解答
-
为什么需要创建这样的容器?
- 用于在封闭的开发环境中快速设置 SSH 服务器。
-
是否安全?
- 不,这种做法不安全,不应在生产环境中使用。
-
如何连接到容器?
- 使用 SSH 客户端连接到端口 2222。
-
如何使用不同的 SSH 端口?
- 在
Dockerfile
中更改EXPOSE 22
行,并使用-p <host-port>:<container-port>
运行容器。
- 在
-
如何禁用 SSH 服务器?
- 在容器中运行
net stop sshd
命令。
- 在容器中运行