如何从node.js应用程序SSH到服务器?

Mai*_*tor 2 linux ssh child-process node.js

var exec = require('child_process').exec;

exec('ssh my_ip',function(err,stdout,stderr){
    console.log(err,stdout,stderr);
});
Run Code Online (Sandbox Code Playgroud)

这只是冻结 - 我想,因为ssh my_ip要求密码,是互动的,等等.如何正确地做到这一点?

And*_*Ty. 6

编写了一个node.js模块,用于通过mscdex使用名为ssh2的节点在SSH中执行任务.它可以在这里找到.你想要的一个例子(来自自述文件)将是:

var Connection = require('ssh2');

var c = new Connection();
c.on('connect', function() {
  console.log('Connection :: connect');
});
c.on('ready', function() {
  console.log('Connection :: ready');
  c.exec('uptime', function(err, stream) {
    if (err) throw err;
    stream.on('data', function(data, extended) {
      console.log((extended === 'stderr' ? 'STDERR: ' : 'STDOUT: ')
                  + data);
    });
    stream.on('end', function() {
      console.log('Stream :: EOF');
    });
    stream.on('close', function() {
      console.log('Stream :: close');
    });
    stream.on('exit', function(code, signal) {
      console.log('Stream :: exit :: code: ' + code + ', signal: ' + signal);
      c.end();
    });
  });
});
c.on('error', function(err) {
  console.log('Connection :: error :: ' + err);
});
c.on('end', function() {
  console.log('Connection :: end');
});
c.on('close', function(had_error) {
  console.log('Connection :: close');
});
c.connect({
  host: '192.168.100.100',
  port: 22,
  username: 'frylock',
  privateKey: require('fs').readFileSync('/here/is/my/key')
});
Run Code Online (Sandbox Code Playgroud)