在 Docker 容器中使用 SSH (Windows)

Using SSH in a Docker container (Windows)

microsoft/aspnetcore docker 图像开始,我能够安装 chocolatey,然后使用 chocolatey 安装一些其他软件:

现在我想从我们的 Bitbucket 服务器克隆一个存储库:

我希望能够使用 git clone ssh://git@<host>/<path to repo>,但此命令总是失败并出现以下错误:

fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

我使用以下命令让它在 Ubuntu 容器中工作: ssh-agent sh -c 'ssh-add /home/bamboo/.ssh/id_rsa; git clone ssh://git@<host>/<path to repo>',但此命令似乎对 Windows 容器没有任何作用。我从来没有从 ssh-agent 那里得到任何反馈,所以我不确定 Open-SSH 是否在工作,或者 Windows 容器中是否存在已知的 Open-SSH 问题?我确实从 ssh-add 那里得到反馈说我的密钥已成功添加,但我仍然无法克隆我的 git 存储库。

有没有人能够在 Windows 容器中成功做到这一点?它适用于我的 Windows 机器,但我没有使用 Open-SSH,我使用的是 Git Bash 工具,这些工具在 Windows 容器中不起作用.这一切都非常令人困惑,因为关于这个主题的所有信息都与 Ubuntu 容器有关,并且解决方案都涉及我在 Windows 容器中没有的 Unix 命令。

我注意到的另一件奇怪的事情是,使用 HTTP 进行克隆也不起作用,而是出现以下错误:

error: failed to execute prompt script (exit code 66) fatal: could not read Password for 'http://(user)@(host)': No error

我从 Git 那里得到了 Windows 一些建议我在 ssh 命令中使用详细标志的人的帮助,即 ssh -vvvvv <host>。这表明我在用户 .ssh 目录中的配置文件有一些额外的权限,由错误消息指示:

debug3: Bad permissions. Try removing permissions for user: S-1-5-11 on file C:\Users\ContainerAdministrator/.ssh/config

使用 icacls 实用程序,我能够删除这些权限,从而允许使用配置文件。