web-dev-qa-db-ja.com

docker-compose環境へのssh-agent転送が機能しない

(私のdocker-composeインストールで)ssh-agentをdockerコンテナーに転送するのに深刻な問題を抱えています。 MacでCatalinaを実行していて、docker-engine 19.03.8とCompose @ 1.24を使用しています。以下は私のdocker-composeファイルです:

version: '3.7'
services:
  platform:
    build:
      context: .
      dockerfile: ./platform/compose/Dockerfile.platform.local
    working_dir: /root/platform
    ports:
      - "3000:3000"
    command: ["./compose/scripts/start_Rails.sh"]
    tty: true
    stdin_open: true
    volumes:
      - type: bind
        source: /run/Host-services/ssh-auth.sock
        target: /run/Host-services/ssh-auth.sock
    env_file: ./platform/.env
    environment:
      TERM: xterm-256color
      SSH_AUTH_SOCK: /run/Host-services/ssh-auth.sock

volumes:

私がssh-agent転送を構成した方法は docker-compose documentation で指定されているとおりです

./compose/scripts/start_Rails.shスクリプトはbundle install && bundle exec Rails sを実行します。私がプライベートリポジトリから取得している宝石はほとんどなく、ssh-agentを転送することでこれらの宝石をインストールできるはずだと思いました。

Docker-composeを起動する前にssh-agentを起動してみましたが、何も実行されないようです。

{
  "debug": true,
  "experimental": true,
  "features": {
    "buildkit": true
  }
}

これは私のdocker設定ファイル内に追加したものです。どんな助けでもありがたいです。

**更新:0 **

私の.sshディレクトリ構造と設定の以下:

ツリー〜/ .ssh

├── config
├── known_hosts
├── midhun
│   ├── id_rsa
│   └── id_rsa.pub
└── client
    ├── id_rsa
    └── id_rsa.pub

猫〜/ .ssh/config

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/client/id_rsa

Host me.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/midhun/id_rsa  

更新:1

構成をForwardAgent Yesで更新しましたが、機能しませんでした。このGist-> https://Gist.github.com/midhunkrishna/8f77ebdc90c7230d2ffae0834dc477cc にsshログ全体を記録しました。

6
MIdhun Krishna

以下が~/.ssh/config問題を修正する必要があります

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/client/id_rsa
    ForwardAgent yes

Host me.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/midhun/id_rsa
    ForwardAgent yes

更新1:2020年5月5日

あなたの場合、それが機能しない可能性がある理由は、ホスト上のエージェントのキーが少ないためです。

あなたはそれを使用して確認することができます

$ ssh-add -L
$ ssh-add -l

エージェントは、メモリにあるキーのみを転送し、ディスクには転送しません。そうしないと、そこにあるすべてのキーを許可なしに公開するリスクがあります。必要なことは、起動時にこれらのキーをssh-agentに追加することです。

$ ssh-add ~/.ssh/client/id_rsa
$ ssh-add ~/.ssh/midhun/id_rsa

次に、ssh-add -L HostとInsider Dockerターミナルでは、両方のキーが表示されます。そしてssh-agentも動作します

ssh-agent inside docker working

2
Tarun Lalwani