docker compose容器内的SSH代理转发
docker compose容器内的SSH代理转发,docker,ssh-keys,docker-compose,Docker,Ssh Keys,Docker Compose,无法打开与身份验证代理的连接。 我正在遵循,但这样做与撰写 安装程序 ~/.ssh/config Host * ForwardAgent yes Dockerfile: FROM atlashealth/ruby:2.2.2 RUN apt-get update -qq && \ apt-get install -qy build-essential libxml2-dev libxslt1-dev \ g++ qt5-default li
无法打开与身份验证代理的连接。
我正在遵循,但这样做与撰写
安装程序
~/.ssh/config
Host *
ForwardAgent yes
Dockerfile:
FROM atlashealth/ruby:2.2.2
RUN apt-get update -qq && \
apt-get install -qy build-essential libxml2-dev libxslt1-dev \
g++ qt5-default libqt5webkit5-dev xvfb dbus \
libmysqlclient-dev \
mysql-client openssh-client git && \
# cleanup
apt-get clean && \
cd /var/lib/apt/lists && rm -fr *Release* *Sources* *Packages* && \
truncate -s 0 /var/log/*log
撰写yaml:
web:
build: "."
environment:
- SSH_AUTH_SOCK=/ssh-agent
volumes:
- "$SSH_AUTH_SOCK:/ssh-agent"
注意:我的作文中运行了插值,因此$SSH\u AUTH\u SOCK
被替换为/private/tmp/com.apple.launchd.ZxGtZy6a9w/Listeners
我在我的主机OSX上有正确的转发设置,它对另一个ubuntu主机有效
跑
docker compose运行web bash
集装箱内
当我运行ssh add-L
时,它表示无法打开到您的身份验证代理的连接。
当我运行ssh代理时,它会产生
SSH_AUTH_SOCK=/tmp/ssh-vqjuo7FIfVOL/agent.21; export SSH_AUTH_SOCK;
SSH_AGENT_PID=22; export SSH_AGENT_PID;
echo Agent pid 22;
当我从bash运行echo$SSH\u AUTH\u SOCK时,它会生成/SSH agent
问题:
compose似乎使SSH\u AUTH\u SOCK
可用于bash
,但SSH代理
似乎没有得到相同的env
。我遗漏了什么?我使用解决了它,不过您应该注意,这不是直接使用SSH\u AUTH\u SOCK
解决的,并且需要一个额外的长时间运行的容器。为了便于使用,我将把这种方法集成到中
docker run-d--name=ssh-agent whilp/ssh-agent:latest
docker-run--rm--volumes-from=ssh-agent-v~/.ssh:/ssh-it-whilp/ssh-agent:latest-ssh-add/ssh/id\u-rsa
docker run--rm--volumes from=ssh-agent-v~/.ssh:/ssh-it whilp/ssh-agent:latest ssh add-L
ssh-T检查密钥git@bitbucket.org
web:
build: .
working_dir: /project
ports:
- "3000"
environment:
# make ssh keys available via ssh forwarding (see volume entry)
- SSH_AUTH_SOCK=/ssh-agent/socket
volumes_from:
# Use configured whilp/ssh-agent long running container for keys
- ssh-agent
由于某种原因,使用之前接受的答案对我不起作用(它以前起作用,但自从上次更改后就不起作用了,我不知道为什么),因此我创建了自己的代理容器:
基于最小的
alpine:3.4
base图像。因此,任何在OSX上仍有此问题的人,请查看自述文件
,它现在很容易启动并运行 是否需要或帮助?#1633是不必要的,我在注释中提到,我已经运行了插值。感谢您给我指出#551,.whilp/ssh代理有一些更改,因此我现在使用不同的方法,不能肯定地告诉您这是否还能继续工作。如果您正在寻找一些简单的东西,并且容器在配置了密钥的主机上运行,那么可以使用卷:-~/.ssh:/root/.ssh
这种方法对我仍然有效,但是环境变量应该是ssh\u AUTH\u SOCK=/ssh/AUTH/SOCK
,并且您还需要配置顶级外部卷--“ssh代理”在本例中--并将其设置为外部卷(不推荐使用中的卷)。在docker compose上,将每个服务设置为装载ssh代理目录,并分别添加密钥