5

这里奇怪的问题。

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

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

奇怪的是:

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

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

1 回答 1

3

尝试指定密钥的路径

rsync -avz -e "ssh -i /home/thisuser/cron/thishost-rsync-key" remoteuser@remotehost:/remote/dir /this/dir/
于 2012-08-18T16:13:32.753 回答