好的,所以对于几个项目我需要访问我的私有(private)存储库,所以我想将主机的 SSH 代理转发到容器以允许从这些私有(private)存储库中检索。最终我想在 docker-compose 中实现它。
我找到了很多指向这样的答案和解决方案:
docker run --rm -t -i \
-v $SSH_AUTH_SOCK:/ssh-agent \
-e SSH_AUTH_SOCK=/ssh-agent \
alpine:3.6 sh
但是当我运行
ssh-add -l
里面(确保安装了openssh
后)我收到以下错误:
Error connecting to agent: Connection refused
在我的 docker compose 设置中也试过这个,但它似乎没有像它应该的那样工作。
由于大多数帖子和解决方案已有几年的历史,我希望有人可以帮助我获得准确的最新信息。
最佳答案
SSH_AUTH_SOCK=`launchctl getenv SSH_AUTH_SOCK` ssh-add
docker run --rm -it \
-v /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock:ro \
-e SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock" \
image ssh hosts
容器中的挂载选项和 SSH_AUTH_SOCK 值都是魔术常量,不要更改它们。launchctl getenv SSH_AUTH_SOCK
由于 bug 可能会在 iTerm2 3.2+ 上输出空字符串.解决方法是以下之一:launchctl asuser $UID launchctl getenv SSH_AUTH_SOCK
, 或 注意:如果
launchctl
问题无法解决,还有另一种方法可以通过 stdio tunnel 转发 ssh 代理.
关于docker - SSH 代理从 Mac OS 转发到 Docker Alpine 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47334784/