ssh-agent 转发到 docker-compose 环境不工作
ssh-agent forwarding into docker-compose environment is not working
我在将 ssh-agent 转发到 docker 容器(使用我的 docker-compose 安装)时遇到了严重的麻烦。我有 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
。我从私有存储库中提取的 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
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
更新:1
用 ForwardAgent Yes
更新了我的配置,但它也没有用。我在这个要点中记录了整个 ssh-logs -> 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 日
在您的情况下,它无法正常工作的原因可能是主机上的代理密钥较少。
您可以确认使用:
$ ssh-add -L
$ ssh-add -l
代理只会转发它在内存中的密钥,不会转发您磁盘上的任何内容。否则,您可能会在未经任何许可的情况下暴露那里的每个密钥。您需要做的是确保在启动时将这些密钥添加到 ssh-agent
:
$ ssh-add ~/.ssh/client/id_rsa
$ ssh-add ~/.ssh/midhun/id_rsa
然后,如果您在主机上和 docker 终端内执行 ssh-add -L
,您应该会看到两个键。 ssh-agent
也可以工作。
我在将 ssh-agent 转发到 docker 容器(使用我的 docker-compose 安装)时遇到了严重的麻烦。我有 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
。我从私有存储库中提取的 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
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
更新:1
用 ForwardAgent Yes
更新了我的配置,但它也没有用。我在这个要点中记录了整个 ssh-logs -> 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 日
在您的情况下,它无法正常工作的原因可能是主机上的代理密钥较少。
您可以确认使用:
$ ssh-add -L
$ ssh-add -l
代理只会转发它在内存中的密钥,不会转发您磁盘上的任何内容。否则,您可能会在未经任何许可的情况下暴露那里的每个密钥。您需要做的是确保在启动时将这些密钥添加到 ssh-agent
:
$ ssh-add ~/.ssh/client/id_rsa
$ ssh-add ~/.ssh/midhun/id_rsa
然后,如果您在主机上和 docker 终端内执行 ssh-add -L
,您应该会看到两个键。 ssh-agent
也可以工作。