Docker中的SSH代理转发组成容器
Could not open a connection to your authentication agent.
我正在按照将$SSH_AUTH_SOCK
作为一个卷装入的方法 ,但是这样做的方式是$SSH_AUTH_SOCK
。
build立
~/.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"
注意:我的/private/tmp/com.apple.launchd.ZxGtZy6a9w/Listeners
正在运行,所以$SSH_AUTH_SOCK
被replace为/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
题
看来,撰写是使SSH_AUTH_SOCK
bash
,但似乎ssh-agent
没有得到相同的环境。 我错过了什么?
我使用whilp / ssh-agent解决了这个问题,但是你应该注意到这不是直接使用SSH_AUTH_SOCK
, 而是需要一个额外的长时间运行的容器。 我将把这个方法集成到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
-
打开一个容器,用
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接受的答案由于某种原因不适用于我(之前工作过,但自从上次更改它不,我不知道为什么),所以我创build了我自己的代理容器:
搬运工-SSH剂
基于最小的alpine:3.4
基本形象。 所以任何人仍然在OSX上遇到这个问题,请检查README
,现在真的很容易启动和运行!