我可以在我的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密钥进行验证。
是吗?如何解决?
答案 0 :(得分:3)
我认为您已正确识别问题:nodejs应用程序无权访问您的ssh凭据。您有几个选择:
如果您可以通过http://或git://协议使存储库可用于匿名只读访问,则可以让nodejs在不需要任何凭据的情况下进行更改。
< / LI>您可以为nodejs用户生成ssh密钥,并授予该用户对存储库的只读访问权限。您只需要在该用户的适当位置生成一个ssh密钥对。
您可以将自己的凭据放在nodejs应用程序可以使用它们的位置,但这存在许多安全问题 - 如果您的Web应用程序遭到入侵,攻击者可以将更改写入您的存储库来自你。所以不要使用这个选项。