docker compose 容器内的 SSH 代理转发

2024-03-07

Could not open a connection to your authentication agent.

我正在关注安装方法$SSH_AUTH_SOCK作为一个卷 https://gist.github.com/d11wtq/8699521,但是通过 compose 来实现。

Setup

~/.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"

NOTE:我在我的作品中运行了插值,所以$SSH_AUTH_SOCK被替换为/private/tmp/com.apple.launchd.ZxGtZy6a9w/Listeners例如。

我在我的主机 OSX 上正确设置了转发设置,它适用于另一个 ubuntu 主机。

Run

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;

当我跑步时echo $SSH_AUTH_SOCK从 bash 中,它产生/ssh-agent

Question

看来 compose 正在制作SSH_AUTH_SOCK有空bash,但似乎ssh-agent并没有得到同样的结果env。我缺少什么?


我用它解决了Whip/ssh-代理 https://github.com/whilp/ssh-agent,尽管你应该注意到这是not using SSH_AUTH_SOCK直接,并且需要额外的长时间运行的容器。我会将这种方法整合到docker-rails https://github.com/alienfast/docker-rails/issues/19为了便于使用。

  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. bash 进入容器并检查密钥ssh -T [email protected] /cdn-cgi/l/email-protection

我的 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker compose 容器内的 SSH 代理转发 的相关文章

随机推荐