如何从脚本(nodejs)运行rsync来识别ssh publickey

奇怪的问题在这里。

运行通过ssh调用rsync的脚本会抛出

“权限被拒绝(publickey)。rsync:连接意外closures(到目前为止收到0字节)[receiver]”

奇怪的是:

  1. SSH用户@主机的作品,所以SSH密钥都设置正确
  2. logging和粘贴由脚本产生的命令到terminal的作品
  3. 从脚本运行whoami显示正确的用户,环境通过process.env传递到产生的实例
  4. 从脚本运行ssh用户@主机不会抛出错误并返回缓冲区,这似乎工作
  5. 运行脚本(只是执行已经testing过的命令)会引发上述错误

    var spawn = require('child_process').spawn; spawn('rsync', [ '-avc', '--delete', '"'+src+'"' , '--link-dest="'+path.join(dest, folder_name)+'"', '"'+path.join(dest, 'latest/')+'"' ],{ cwd: process.cwd(), env: process.env }); 

尝试指定密钥的path

 rsync -avz -e "ssh -i /home/thisuser/cron/thishost-rsync-key" remoteuser@remotehost:/remote/dir /this/dir/