在 Docker 容器中使用 SSH (Windows)
Using SSH in a Docker container (Windows)
从 microsoft/aspnetcore
docker 图像开始,我能够安装 chocolatey,然后使用 chocolatey 安装一些其他软件:
- open-ssh
- git
现在我想从我们的 Bitbucket 服务器克隆一个存储库:
- 我将 Bitbucket 服务器添加到
known_hosts
文件中(甚至从容器中通过 ssh 进入服务器以进行双重检查)
- 我添加了我的 Bitbucket ssh 密钥,我一直在我的机器上成功使用它并从 Ubuntu 容器中成功使用它
- 我在用户的
.ssh
目录中添加了一个 config
文件来告诉 git 使用我的 ssh 密钥
我希望能够使用 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
实用程序,我能够删除这些权限,从而允许使用配置文件。
从 microsoft/aspnetcore
docker 图像开始,我能够安装 chocolatey,然后使用 chocolatey 安装一些其他软件:
- open-ssh
- git
现在我想从我们的 Bitbucket 服务器克隆一个存储库:
- 我将 Bitbucket 服务器添加到
known_hosts
文件中(甚至从容器中通过 ssh 进入服务器以进行双重检查) - 我添加了我的 Bitbucket ssh 密钥,我一直在我的机器上成功使用它并从 Ubuntu 容器中成功使用它
- 我在用户的
.ssh
目录中添加了一个config
文件来告诉 git 使用我的 ssh 密钥
我希望能够使用 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
实用程序,我能够删除这些权限,从而允许使用配置文件。