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中以方便使用。

  1. 启动一个长时间运行的容器docker run -d --name=ssh-agent whilp/ssh-agent:latest

  2. 添加你的关键docker run --rm --volumes-from=ssh-agent -v ~/.ssh:/ssh -it whilp/ssh-agent:latest ssh-add /ssh/id_rsa

  3. 列出您的密钥docker run --rm --volumes-from=ssh-agent -v ~/.ssh:/ssh -it whilp/ssh-agent:latest ssh-add -L

  4. 打开一个容器,用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 ,现在真的很容易启动和运行!