【问题标题】:Using SSH in a Docker container (Windows)在 Docker 容器中使用 SSH (Windows)
【发布时间】:2018-06-03 11:26:15
【问题描述】:

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

  • open-ssh
  • 混帐

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

  • 我将 Bitbucket 服务器添加到 known_hosts 文件中(甚至从容器 ssh 到服务器以仔细检查)
  • 我添加了我的 Bitbucket ssh 密钥,该密钥已在我的机器上成功使用,并在 Ubuntu 容器中成功使用
  • 我在用户的.ssh 目录中添加了一个config 文件来告诉git 使用我的ssh 密钥

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

致命:无法从远程存储库读取。

请确保您拥有正确的访问权限和存储库 存在。

我使用以下命令让它在 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 进行克隆也不起作用,而是出现以下错误:

错误:无法执行提示脚本(退出代码 66) 致命:无法执行 读取“http://(user)@(host)”的密码:没有错误

【问题讨论】:

  • 检查所有这些,如果它在 Windows Server Core 完整安装中工作,然后再尝试在 servercore 容器中
  • 我刚刚找到this open Github issue,它确实有一个建议,所以我要尝试一下

标签: git-clone openssh windows-container


【解决方案1】:

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

debug3:权限错误。尝试删除用户的权限:文件 C:\Users\ContainerAdministrator/.ssh/config 上的 S-1-5-11

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

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 1970-01-01
    • 2018-04-17
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    相关资源
    最近更新 更多