我有一个使用docker的Rails应用,该应用对另一个应用进行了一些自动更改,然后git将更改推送到GitHub。我花了一些时间才能将我的ssh密钥以某种相同的方式放置到docker容器上(对它完全不满意,但是在我整理完之后会对其进行更改)。我现在的问题是,在Dockerfile中运行git克隆时,一切都很好,但是从我的rails代码中,它无法说明我没有访问权限,因此在代码中我要重新ssh-add密钥。但是它说Could not open a connection to your authentication agent.
,所以我尝试重新初始化ssh-agent(echo $(ssh-agent -s)
),这似乎成功了,但在ssh-add上仍然失败。
如果我使用SSH并尝试这些步骤,则可以正常工作,但是如果我将console插入并运行运行这些控制台调用的功能,则它将失败,并出现相同的问题。然后似乎是没有设置环境变量的ssh-agent调用。我感觉到heroku容器不允许更改环境变量,而不能通过它们的heroku config:set
进行更改,但这是不可能的,因为每个进程将具有不同的SSH_AUTH_SOCK
和SSH_AGENT_PID
。关于如何处理此问题的任何建议都会有很大帮助。
答案 0 :(得分:0)
当您没有运行活动的SSH代理时,通常会发生此错误。
Could not open a connection to your authentication agent.
这在基于Debian的系统中很常见,而大多数Ubuntu始终都在运行。
要解决此问题,您只需要启动一个新代理即可。
eval $(ssh-agent)
此操作应在ssh-add
之前运行。
答案 1 :(得分:0)
在当前设置中,您需要评估使用受密码保护的私密SSH密钥的风险/成本。
与mentioned here一样,对于自动过程,建议使用无密码密钥,如果您确定没有简单的方法可以访问该私钥,则建议使用该选项。