如何在docker容器窗口中设置SSH_AUTH_SOCK环境变量

Joe*_*ito 6 ssh-agent docker docker-compose

我在 Windows 机器上复制 dockerfile 中的 ssh 密钥用于开发目的,但无法获取 SSH_AUTH_SOCK 变量集,

这是我的 Dockerfile

FROM node:alpine


WORKDIR /usr/src/app
COPY package.json .

ADD id_rsa /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa \
  && touch /root/.ssh/known_hosts \
  && ssh-keyscan -H github.com >> /root/.ssh/known_hosts \
  && eval `ssh-agent -s` && ssh-add /root/.ssh/id_rsa

RUN yarn
CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)

我尝试在我的撰写文件中评估 ssh-agent 的结果

command: >
  sh -c 'eval `ssh-agent -s`
  && ssh-add /root/.ssh/id_rsa
  && echo $SSH_AUTH_SOCK'
Run Code Online (Sandbox Code Playgroud)

当我执行简单的 nodejs 文件时,SSH_AUTH_SOCK未设置。

printenv也没有显示出来,有没有办法做到这一点。

我可以看到有很多适用于 linux 和 osx 的 ssh-agent 转发器解决方案,但它不适用于 Windows。

小智 1

请注意,它在将完整路径传递到实际 ssh 密钥时起作用,例如:

$ docker build --ssh default=c:/users/MY_WINDOWS_USER_NAME/.ssh/id_ed25519 .
Run Code Online (Sandbox Code Playgroud)

或者

$ docker build --ssh default=c:/users/MY_WINDOWS_USER_NAME/.ssh/id_rsa .
Run Code Online (Sandbox Code Playgroud)