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

时间:2012-08-18 16:07:57

标签: node.js rsync

这里有一个奇怪的问题。

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

  

“权限被拒绝(公钥).rsync:连接意外关闭   (到目前为止收到0个字节)[接收者]“

奇怪:

  1. ssh user @ host工作,所以ssh密钥都设置正确
  2. 将脚本生成的命令记录并粘贴到终端中
  3. 从脚本运行whoami显示正确的用户,并通过process.env
  4. 将环境传递给spawn实例
  5. 从脚本运行ssh user @ host不会抛出错误并返回缓冲区,因此似乎可以正常工作
  6. 运行脚本(只是执行已经测试过的命令)会抛出上述错误

    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
    });
    

1 个答案:

答案 0 :(得分:2)

尝试指定密钥的路径

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