gpt4 book ai didi

ruby-on-rails - 为 ruby​​ 系统调用运行 eval ssh-agent

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:17 25 4
gpt4 key购买 nike

我正在尝试为用户使用 rails 输入的电子邮件 ID 生成 ssh key 。

在操作中,我正在运行使用 system() 调用执行该过程所需的所有命令。

在本地 Ubuntu 14.04 上,一切似乎都运行良好。但是在 AWS 上的 Ubuntu Server 14.04 上, key 生成成功但在 ssh-add 上失败。

问题:

在我的本地系统上,ssh-agent 一直启动并运行,但在服务器上它永远不会为每个 shell session 自动启动。这就是 ssh-add 在服务器上失败的原因。

为此,我在服务器的 .bash_profile 文件中添加了一些代码,这些代码将在每个 session 中启动 ssh-agent。现在,每次我通过 ssh 与服务器建立 session 时,ssh-agent 都会运行,但它不会在 ruby​​ 的 system() 调用时运行。

我在做:

system('ssh-add id_rsa')

上面写着无法打开与您的身份验证代理的连接.所以,我接下来要做的是:

system('eval "$(ssh-agent -s)" & ssh-add id_rsa')

但还是没能解决问题。

我不知道为什么在本地我不需要手动启动 ssh-agent 并且所有代码运行都没有任何问题。以及如何使 ssh-agent 在我的本地系统上正常工作。

我希望能够使用 ssh-add some-key 添加新生成的 ssh key 并使其持久化,这样我就不必在以后重新启动服务器时再次添加它.我在 Rails 方法中执行所有这些操作,该方法使用 system() 调用发出所有命令。

帮助将不胜感激。谢谢。

最佳答案

I want to clone and pull code from a person's git repository, that may be private in which case I am generating a pair of ssh keys and adding the public key to the person's github account using the API.

It's like the server will be accessing 5-10 people's private github repositories by creating ssh keys for all of them and adding the public keys into their account. Example: http://gist.github.com/jexchan/2351996

要使用 git 访问远程存储库,您不需要 ssh-agent。在 ssh_config 中指定 key ,例如

Host github.com-user1
HostName github.com
IdentityFile ~/.ssh/id_rsa_user1

然后克隆使用:

git clone git@github.com-user1:user1/whatever.git whatever

以同样的方式工作。但请确保配置文件可访问。

此外,使用 ssh-agent 不会扩展,因为代理会提供他拥有的所有 key ,而不管用户(在链接的示例中)。如果你长大超过 5 个存储库,你将开始看到身份验证失败。

关于ruby-on-rails - 为 ruby​​ 系统调用运行 eval ssh-agent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34513550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com