Docker --ssh 默认权限被拒绝(公钥)

ndr*_*dr4 10 ssh-keys docker dockerfile

我正在尝试在 MacOS 上构建 docker 映像,--ssh default但它不起作用。Linux 上的构建工作相同。

//Dockerfile

#syntax=docker/dockerfile:experimental
FROM node:16

WORKDIR /app

RUN chown -R node.node /app

RUN mkdir ~/.ssh/ && ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts

RUN --mount=type=ssh git clone git+ssh://git@github.com/account_name/repo.git

CMD tail -f /dev/null
Run Code Online (Sandbox Code Playgroud)

当我跑步时

docker build --ssh default -t my_image .
Run Code Online (Sandbox Code Playgroud)

我收到错误:

git@github.com: Permission denied (publickey)
fatal: Could not read from remote repository
Run Code Online (Sandbox Code Playgroud)

我的 ssh 密钥位于~/.ssh/id_rsa本地计算机上,并且它在 docker 之外工作。

如果我尝试在 Dockerfile 中运行:

RUN --mount=type=ssh cat ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

我收到错误:

cat: /root/.ssh/id_rsa No such file or directory
Run Code Online (Sandbox Code Playgroud)

nbl*_*bl7 13

Docker 不会从~/.ssh/.

使用默认配置时,--ssh default您需要将密钥添加到本地 SSH 代理。

您可以ssh-add -L在本地检查以查看公钥是否对代理可见。

如果不是,请尝试运行ssh-add -K

参考:

https://medium.com/@tonistiigi/build-secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066

https://apple.stackexchange.com/questions/254468/macos-sierra-doesn-t-seem-to-remember-ssh-keys- Between-reboots