Как передать ключевой файл при порождении команды ssh из node.js?

Это работает с моего локального терминала:

ssh -i ~/.ec2/mykey.pem [email protected] ls

Конечно, это так. Но когда я пытаюсь сделать то же самое, используя node.js child_process.spawn Команда жалуется, что ключ не существует / может 'т быть доступным.

// child process
var childProcess = require('child_process').spawn;

// spawn the slave using slaveId as the key
slaves[slaveId] = childProcess('ssh', [
    '-i /mykey.pem',
    '[email protected]',
    'ls'
])  

Результат:

stderr: Warning: Identity file  /mykey.pem not accessible: No such file or directory.  
stderr: Permission denied (publickey).

Вещи пытались:

Вариации на пути к ключу:

/actual/path/to/mykey.pem

mykey.pem (с копией файла в корне узла проекта)

/mykey.pem (с копией файла в корне узла проекта)

~/.ec2.mykey.pem (где это должно быть)

Выполнение команды без ssh-части, т.е.childProcess(ls); - работает.

chmod 644, 600, 400 etc. mykey.pem

Моя единственная теория на данный момент: есть проблема с передачей ссылки на файл, и мне нужно сделатьчто-то используя модуль fs. (?) И да, я знаю, что есть библиотеки для доступа по SSH с узлом, но они используют пароли, которые выигралине сокращайте это и так или иначе, мои требования неЭто действительно оправдывает библиотеку.

Пожалуйста, скажи мне, что яЯ глуп и что это возможно.

ОБНОВИТЬ:

Хорошо, так что яМожно используйте команду exec следующим образом:

var childProcess = require('child_process').exec;
slaves[slaveId] = childProcess('ssh -i mykey.pem [email protected] ls',  function (error, stdout, stderr) {...}

Тем не менее, я чувствую, что ябыл понижен от создания настоящего раба, используяfork со всем этимПриятные сообщения и удобные свойства (моя первоначальная реализация, которая работает локально), позволяющая иметь пылесос и получать всю работу самостоятельно (теперь я хочу запускать ведомые на удаленных хостах).

Ответы на вопрос(1)

Ваш ответ на вопрос