无法在nodejs中执行git命令

时间:2014-06-05 14:19:41

标签: linux node.js git

我可以在我的VPS上的linux命令行中成功执行git pull,但是当我在Nodejs中使用execFile执行包含“git pull”的bash文件时,它给了我一个错误:{{1} } 我怎么解决这个问题?

更新: 我得到的整个错误信息是:

Command failed: Host key verification failed.

似乎与dylants提供的问题不同。

bash文件脚本是这样的,我用它来自动部署我的nodejs app:

{ [Error: Command failed: Host key verification failed. fatal: Could not read 
from remote  repository. Please make sure you have the correct access rights
and the repository exists. ] killed: false, code: 1, signal: null }

我在我的vps上使用ssh协议而不是https协议,以便每次从我的bitbucket存储库git pull && pm2 reload www 时阻止密码提示。所以在我的用户目录git pull中生成了ssh密钥。我认为nodejs无法执行bash文件的原因是:在nodejs app中运行bash文件的用户与在命令行中运行bash文件的用户不同。因此运行nodejs的用户无法使用~/.ssh/中的ssh密钥进行验证。

是吗?如何解决?

1 个答案:

答案 0 :(得分:3)

我认为您已正确识别问题:nodejs应用程序无权访问您的ssh凭据。您有几个选择:

  • 如果您可以通过http://或git://协议使存储库可用于匿名只读访问,则可以让nodejs在不需要任何凭据的情况下进行更改。

    < / LI>
  • 您可以为nodejs用户生成ssh密钥,并授予该用户对存储库的只读访问权限。您只需要在该用户的适当位置生成一个ssh密钥对。

  • 您可以将自己的凭据放在nodejs应用程序可以使用它们的位置,但这存在许多安全问题 - 如果您的Web应用程序遭到入侵,攻击者可以将更改写入您的存储库来自你。所以不要使用这个选项。