在无头 docker 主机上启动 ssh-agent

Start ssh-agent on headless docker host

在我的台式机上,我开发了一个 docker 容器,它克隆了一些 Git 存储库。为了提供凭据,我将 $SSH_AUTH_SOCK 中指定的本地 ssh-agent 安装到 docker 容器中。

现在我想将此 docker 映像部署到 docker 主机 运行 ubuntu 上。我已经为服务器创建了一个密钥对,我还授予了对 Git 存储库的访问权限。但是当我登录时,$SSH_AUTH_SOCK 变量没有设置并且没有 ssh-agent 是 运行。直接通过ssh -A转发绝对不是我想要的

如何正确启动 ssh-agent 以使其可供 docker 容器访问?

一般来说,它就像在 shell 中执行 eval $(ssh-agent) > /dev/null 一样简单。但是,正如 Jon Cairns 在博文 Understanding ssh-agent and ssh-add.

中所解释的那样,每次都会启动一个新代理

只启动一次,每次都获取环境,使用ssh-find-agent

克隆 repo(例如到 ~/ssh-find-agent)并将以下行添加到您的 .bashrc.zshrc

. $HOME/ssh-find-agent/ssh-find-agent.sh
ssh_find_agent -a || eval $(ssh-agent) > /dev/null

如果非 运行,这将启动 ssh-agent,如果代理已经 运行,则根据需要设置环境。

现在 $SSH_AUTH_SOCK 可以安装到您的 docker 容器中。