在heroku上运行时ssh-agent问题

时间:2018-12-31 22:44:24

标签: ruby-on-rails git docker heroku ssh

我有一个使用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_SOCKSSH_AGENT_PID 。关于如何处理此问题的任何建议都会有很大帮助。

2 个答案:

答案 0 :(得分:0)

当您没有运行活动的SSH代理时,通常会发生此错误。

Could not open a connection to your authentication agent.

这在基于Debian的系统中很常见,而大多数Ubuntu始终都在运行。

要解决此问题,您只需要启动一个新代理即可。

eval $(ssh-agent)

此操作应在ssh-add之前运行。

答案 1 :(得分:0)

在当前设置中,您需要评估使用受密码保护的私密SSH密钥的风险/成本。

mentioned here一样,对于自动过程,建议使用无密码密钥,如果您确定没有简单的方法可以访问该私钥,则建议使用该选项。