web-dev-qa-db-fra.com

Le transfert ssh-agent dans l'environnement docker-compose ne fonctionne pas

J'ai eu de sérieux problèmes pour faire transférer ssh-agent dans le conteneur docker (avec mon installation docker-compose). J'ai Mac exécutant Catalina, avec docker-engine 19.03.8 et Compose @ 1.24. Voici mon fichier 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:

La façon dont j'ai configuré le transfert ssh-agent est comme spécifié dans documentation docker-compose

Le ./compose/scripts/start_Rails.sh script fait bundle install && bundle exec Rails s. J'ai quelques gemmes que je tire des référentiels privés et j'ai pensé que je devrais pouvoir installer ces gemmes en transférant ssh-agent.

J'ai également essayé de démarrer l'agent ssh avant de lancer le docker-compose, mais cela ne semble rien faire.

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

C'est ce que j'ai ajouté dans mon fichier de configuration docker. Toute aide est appréciée.

** MISE À JOUR: 0 **

Ce qui suit dans la structure et la configuration de mon répertoire .ssh:

arbre ~/.ssh

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

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

MISE À JOUR: 1

J'ai mis à jour ma configuration avec ForwardAgent Yes et cela n'a pas fonctionné non plus. J'ai enregistré des journaux ssh entiers dans ce Gist -> https://Gist.github.com/midhunkrishna/8f77ebdc90c7230d2ffae0834dc477cc .

6
MIdhun Krishna

Je crois que ci-dessous modifiez votre ~/.ssh/config devrait résoudre le problème

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

Mise à jour 1: 5 mai 2020

Dans votre cas, la raison pour laquelle cela ne fonctionne pas est que l'agent sur l'hôte est sans clé.

Vous pouvez confirmer qu'en utilisant

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

L'agent ne transmettra que les clés qu'il a dans sa mémoire, rien sur votre disque. Sinon, vous risquez d'exposer chaque clé qui s'y trouve sans aucune autorisation. Ce que vous devez faire est de vous assurer d'ajouter ces clés à votre agent ssh au démarrage

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

Alors si vous faites ssh-add -L sur l'hôte et le terminal docker d'initié, vous devriez voir les deux clés. Et l'agent ssh fonctionnera également

ssh-agent inside docker working

2
Tarun Lalwani