docker 组合容器内的 SSH 代理转发
SSH Agent forwarding inside docker compose container
Could not open a connection to your authentication agent.
我正在关注 approach of mounting the $SSH_AUTH_SOCK
as a volume,但使用 compose 进行关注。
设置
~/.ssh/config
Host *
ForwardAgent yes
Docker 文件:
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"
注意: 我在撰写时有插值 运行ning,因此 $SSH_AUTH_SOCK
被替换为 /private/tmp/com.apple.launchd.ZxGtZy6a9w/Listeners
例如。
我在我的主机 OSX 上正确地设置了转发,它适用于另一个 ubuntu 主机。
运行
docker-compose run web bash
容器内
当我运行ssh-add -L
时,它表示Could not open a connection to your authentication agent.
当我运行ssh-agent
时,它产生
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_AUTH_SOCK
时,它产生 /ssh-agent
问题
似乎 compose 使 SSH_AUTH_SOCK
可用于 bash
,但似乎 ssh-agent
并没有获得相同的 env
。我错过了什么?
为了方便使用,我用whilp/ssh-agent, though you should note that this is not using SSH_AUTH_SOCK
directly and requires an additional long running container. I'll integrate this approach into docker-rails解决了。
启动一个长运行容器
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_rsa
列出您的密钥
docker run --rm --volumes-from=ssh-agent -v ~/.ssh:/ssh -it whilp/ssh-agent:latest ssh-add -L
bash 放入容器中,然后用 ssh -T git@bitbucket.org
检查密钥
我的 yaml 看起来像:
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
之前使用 whilp/ssh-agent 接受的答案由于某种原因对我不起作用(它以前有效但自从上次更改后它不起作用而且我不知道为什么)所以我创建了自己的代理容器:
基于最小 alpine:3.4
基本图像。所以在 OSX 上仍然遇到此问题的任何人,检查 README
它现在真的很容易得到它并且 运行!
Could not open a connection to your authentication agent.
我正在关注 approach of mounting the $SSH_AUTH_SOCK
as a volume,但使用 compose 进行关注。
设置
~/.ssh/config
Host *
ForwardAgent yes
Docker 文件:
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"
注意: 我在撰写时有插值 运行ning,因此 $SSH_AUTH_SOCK
被替换为 /private/tmp/com.apple.launchd.ZxGtZy6a9w/Listeners
例如。
我在我的主机 OSX 上正确地设置了转发,它适用于另一个 ubuntu 主机。
运行
docker-compose run web bash
容器内
当我运行ssh-add -L
时,它表示Could not open a connection to your authentication agent.
当我运行ssh-agent
时,它产生
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_AUTH_SOCK
时,它产生 /ssh-agent
问题
似乎 compose 使 SSH_AUTH_SOCK
可用于 bash
,但似乎 ssh-agent
并没有获得相同的 env
。我错过了什么?
为了方便使用,我用whilp/ssh-agent, though you should note that this is not using SSH_AUTH_SOCK
directly and requires an additional long running container. I'll integrate this approach into docker-rails解决了。
启动一个长运行容器
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_rsa
列出您的密钥
docker run --rm --volumes-from=ssh-agent -v ~/.ssh:/ssh -it whilp/ssh-agent:latest ssh-add -L
bash 放入容器中,然后用
ssh -T git@bitbucket.org
检查密钥
我的 yaml 看起来像:
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
之前使用 whilp/ssh-agent 接受的答案由于某种原因对我不起作用(它以前有效但自从上次更改后它不起作用而且我不知道为什么)所以我创建了自己的代理容器:
基于最小 alpine:3.4
基本图像。所以在 OSX 上仍然遇到此问题的任何人,检查 README
它现在真的很容易得到它并且 运行!