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

标签 node.js rsync

这里有一个奇怪的问题。

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

"Permission denied (publickey). rsync: connection unexpectedly closed (0 bytes received so far) [receiver]"

奇怪的是:

  1. ssh user@host 有效,因此 ssh key 都已正确设置
  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
    });
    

最佳答案

尝试指定 key 的路径

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

关于node.js - 从脚本(nodejs)运行时如何让rsync识别ssh publickey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12020073/

相关文章:

用于监控网络请求和响应的 Node.js 代理

node.js - 在expressjs 4.x中将less文件编译为css

javascript - Socket.io:如何检查是否有一定数量的客户端发出了事件?

linux - 如何合并不同服务器上的目录?

nokogiri - 使用 rspec 时出错,安装 Homebrew 并卸载 MacPorts 后缺少库

linux - 使用 Rsync 包含和排除选项按模式包含目录和文件

javascript - Object.prototype 在 Node 中返回空对象

node.js - 在 Node.js 中使用 async/await 正确处理错误

linux - rsync 守护进程行为异常

backup - RSync 每次都会更改的单个(存档)文件