我想使用ssh-agent将我的密钥转发到docker镜像中,并从私有github存储库中提取。
我在Yosemite上使用的是略微修改过的https://github.com/phusion/passenger-docker和boot2docker版本。
ssh-add -l
...key details
boot2docker up
然后,我使用我在许多地方看到的命令(即https://gist.github.com/d11wtq/8699521):
docker run --rm -t -i -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent my_image /bin/bash
然而,它似乎不起作用:
root@299212f6fee3:/# ssh-add -l
Could not open a connection to your authentication agent.
root@299212f6fee3:/# eval `ssh-agent -s`
Agent pid 19
root@299212f6fee3:/# ssh-add -l
The agent has no identities.
root@299212f6fee3:/# ssh git@github.com
Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts.
Permission denied (publickey).
发布于 2020-03-17 05:21:15
从2.2.0.0
版本开始,docker for macOS允许用户在容器内访问主机的SSH代理。
下面是一个命令示例,让您执行此操作:
docker run --rm -it \
-v /run/host-services/ssh-auth.sock:/ssh-agent \
-e SSH_AUTH_SOCK="/ssh-agent" \
my_image
请注意,您必须挂载特定的路径(/run/host-services/ssh-auth.sock
),而不是$SSH_AUTH_SOCK
环境变量中包含的路径,就像在linux主机上所做的那样。
发布于 2016-12-09 21:16:52
一句话:
下面是如何在运行Debian Jessie镜像的Ubuntu 16上设置它:
docker run --rm -it --name container_name \
-v $(dirname $SSH_AUTH_SOCK):$(dirname $SSH_AUTH_SOCK) \
-e SSH_AUTH_SOCK=$SSH_AUTH_SOCK my_image
https://techtip.tech.blog/2016/12/04/using-ssh-agent-forwarding-with-a-docker-container/
发布于 2015-07-09 21:34:16
我对@wilwilson的回答进行了扩展,并创建了一个在OSX boot2docker环境中设置代理转发的脚本。
https://gist.github.com/rcoup/53e8dee9f5ea27a51855
#!/bin/bash
# Use a unique ssh socket name per-invocation of this script
SSH_SOCK=boot2docker.$$.ssh.socket
# ssh into boot2docker with agent forwarding
ssh -i ~/.ssh/id_boot2docker \
-o StrictHostKeyChecking=no \
-o IdentitiesOnly=yes \
-o UserKnownHostsFile=/dev/null \
-o LogLevel=quiet \
-p 2022 docker@localhost \
-A -M -S $SSH_SOCK -f -n \
tail -f /dev/null
# get the agent socket path from the boot2docker vm
B2D_AGENT_SOCK=$(ssh -S $SSH_SOCK docker@localhost echo \$SSH_AUTH_SOCK)
# mount the socket (from the boot2docker vm) onto the docker container
# and set the ssh agent environment variable so ssh tools pick it up
docker run \
-v $B2D_AGENT_SOCK:/ssh-agent \
-e "SSH_AUTH_SOCK=/ssh-agent" \
"$@"
# we're done; kill off the boot2docker ssh agent
ssh -S $SSH_SOCK -O exit docker@localhost
将其放入~/bin/docker-run-ssh
,使用chmod +x
,并使用docker-run-ssh
而不是docker run
。
https://stackoverflow.com/questions/27036936
复制相似问题