【问题标题】:ssh-add in a docker container在 docker 容器中添加 ssh
【发布时间】:2018-04-17 06:51:59
【问题描述】:

我已将 ~/.ssh 目录从主机安装到我的开发 docker 容器中,并尝试将部署密钥添加到入口点中的 ssh 代理,如下所示:

#!/bin/bash
set -e

#add the deployment key
if [[ ! -z ${DEPLOYMENT_SSH_KEY} ]] ; then
    echo "Adding deployment ssh key ${DEPLOYMENT_SSH_KEY} to ssh agent"
    eval $(ssh-agent -s) && ssh-add /.ssh/${DEPLOYMENT_SSH_KEY}
else
    echo "Deployment ssh key is not defined"
fi

echo "STARTING PHP FPM, CMD $@"

docker-php-entrypoint "$@"

根据日志正常添加密钥:

代理 pid 8

将部署 ssh 密钥 id_rsa 添加到 ssh 代理

添加的身份:/.ssh/id_rsa(rsa w/o comment)

但是,它实际上最终没有向代理添加任何密钥,并且我无法从容器内克隆我的存储库。在容器中执行的命令ssh-add -l

无法打开与您的身份验证代理的连接。

这是为什么呢?我听说过 SSH 代理转发作为替代方案,但我想知道为什么我尝试过的方法不起作用?

【问题讨论】:

标签: bash docker ssh-agent


【解决方案1】:

由于ssh-add 错误消息显示“无法连接”,它要么找不到SSH_AUTH_SOCK 环境变量,要么无法访问该变量中包含的套接字路径。 由于ssh-agent 默认使用/tmp 作为套接字,猜测您的/tmp 挂载点在某种程度上被破坏了。

【讨论】:

  • 设置了SSH_AUTH_SOCK var,它可以在启动php-fpm之前,即在入口点执行docker-php-entrypoint "$@"之前连接并添加密钥到代理
猜你喜欢
  • 1970-01-01
  • 2020-05-25
  • 2017-11-02
  • 2018-06-03
  • 2016-09-08
  • 2017-06-22
  • 2018-05-07
  • 1970-01-01
  • 2013-08-10
相关资源
最近更新 更多