Пересылка ssh-agent в среду docker-compose не работает

У меня были серьезные проблемы с пересылкой ssh-agent в контейнер докеров (с моей установкой docker-compose). У меня Mac под управлением Catalina, с docker-engine 19.03.8 и Compose @ 1.24. Ниже приведен мой файл для создания докеров:

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, указан в документация по созданию докеров

Сценарий ./compose/scripts/start_rails.sh выполняет bundle install && bundle exec rails s. У меня есть несколько драгоценных камней, которые я извлекаю из частных репозиториев, и я подумал, что смогу установить эти драгоценные камни, перенаправив ssh-agent.

Я также пытался запустить ssh-agent перед тем, как раскрутить docker-compose, но, похоже, это ничего не дает.

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

Это то, что я добавил в свой файл конфигурации докера. Любая помощь приветствуется.

**ОБНОВЛЕНИЕ: 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, тоже не работает. Я записал целые журналы ssh в этом gist -> https://gist.github.com/midhunkrishna/8f77ebdc90c7230d2ffae0834dc477cc .


person MIdhun Krishna    schedule 30.04.2020    source источник
comment
Чего вы пытаетесь добиться непонятно?   -  person Tarun Lalwani    schedule 04.05.2020
comment
Попытка перенаправить ssh-agent в работающий контейнер докеров, чтобы при запуске bundle install сборщик мог извлекать драгоценные камни из частного репо.   -  person MIdhun Krishna    schedule 04.05.2020
comment
Пожалуйста, добавьте ForwardAgent yes в обе свои записи и посмотрите, работает ли это.   -  person Tarun Lalwani    schedule 04.05.2020


Ответы (1)


Я считаю, что ниже изменение вашего ~/.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: 5 мая 2020 г.

В вашем случае причина, по которой он может не работать, заключается в том, что агент на хосте имеет меньше ключа.

Вы можете подтвердить это, используя

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

Агент будет пересылать только те ключи, которые находятся в его памяти, а не на вашем диске. В противном случае вы рискуете раскрыть все имеющиеся ключи без какого-либо разрешения. Что вам нужно сделать, так это убедиться, что вы добавили эти ключи в свой ssh-агент при запуске.

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

Затем, если вы выполните ssh-add -L на хост-терминале и инсайдерском док-терминале, вы должны увидеть оба ключа. И ssh-агент тоже будет работать

ssh-агент внутри докера работает

person Tarun Lalwani    schedule 04.05.2020
comment
Спасибо Тарун, но, похоже, это не работает. Вы можете проверить полные журналы здесь -> gist.github.com/midhunkrishna/8f77ebdc90c7230d2ffae0834dc477cc - person MIdhun Krishna; 05.05.2020
comment
Большое спасибо. Все было так, как ты сказал. В ssh-agent не было добавлено никаких идентификаторов. Теперь это работает. - person MIdhun Krishna; 05.05.2020
comment
Еще одна интересная вещь, которую я обнаружил, заключается в том, что после запуска процесса докера, если я создам новый ssh-агент с помощью eval ssh-agent –s, тогда конфигурация ssh не будет перенаправлена. - person MIdhun Krishna; 27.10.2020