ruby-on-rails - ssh-agent 转发到 docker-compose 环境不起作用

标签 ruby-on-rails docker docker-compose ssh-agent moby

我在将 ssh-agent 转发到 docker 容器(使用我的 docker-compose 安装)时遇到了严重的麻烦。我有运行 Catalina 的 Mac,使用 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 .我从私有(private)存储库中提取的 gem 很少,我认为我应该能够通过转发 ssh-agent 来安装这些 gem。

在启动 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 中记录了整个 ssh 日志 -> https://gist.github.com/midhunkrishna/8f77ebdc90c7230d2ffae0834dc477cc .

最佳答案

我相信以下更改为您的~/.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 日
在您的情况下,它可能无法正常工作的原因是主机上的代理 key 较少。
您可以确认使用:
$ ssh-add -L
$ ssh-add -l
代理只会转发它在内存中的 key ,而不是在您的磁盘上。否则,您可能会在未经任何许可的情况下暴露所有 key 。您需要做的是确保将这些 key 添加到您的 ssh-agent启动时:
$ ssh-add ~/.ssh/client/id_rsa
$ ssh-add ~/.ssh/midhun/id_rsa
那么如果你这样做 ssh-add -L在主机和 docker 终端内,您应该看到两个键。和 ssh-agent也将工作。
ssh-agent inside docker working

关于ruby-on-rails - ssh-agent 转发到 docker-compose 环境不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61524982/

相关文章:

ruby-on-rails - 如何在不破坏用户记录的情况下删除用户关联?

ruby-on-rails - Rails 茧 gem : Undefined Method 'new_record?' on link_to_remove_association with Wicked

docker - 来自服务器的领事空回复

java - 如何让两个dockerized应用程序在给定端口上进行通信?

ruby-on-rails - 我无法在 Ubuntu 14.02 中使用 ruby​​ 2.2.2 和 Rails 4 运行服务器

ruby-on-rails - 强大的参数JSON API rails

docker - Kubernetes 上的暂存和生产

postgresql - 为 Docker 容器指定 super 用户 PostgreSQL 密码

docker - 如何将docker拉至特定服务器?

ruby-on-rails - 如何从目录外执行 docker compose?