1

NodeJS で SSH2 を使用して、あるサーバーから別のサーバーにファイルを転送しようとしています。ただし、ネットワーク管理者は承認されたユーザーの秘密鍵を設定しており、基本的にコマンドライン経由で他のサーバーに接続できるようにしています... $ ssh user@server2 とパスワードを入力せずに接続できます。認証がknown_hostsで事前定義されていることは知っていますが、これをnodejsで機能させようとしています。

SSH2 構成では、privateKey またはパスワードのいずれかが必要なようです。このような問題の回避策を知っている人はいますか? それとも、私は何か間違ったことをしていますか?私が見つけることができる唯一のキーは known_hosts ファイルにありますが、正しい形式ではないようです。

これが私が取り組んでいるものです...

var Client = require('ssh2').Client;
 
var conn = new Client();
conn.on('ready', function() {
  console.log('Client :: ready');
  conn.exec('uptime', function(err, stream) {
    if (err) throw err;
    stream.on('close', function(code, signal) {
      console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
      conn.end();
    }).on('data', function(data) {
      console.log('STDOUT: ' + data);
    }).stderr.on('data', function(data) {
      console.log('STDERR: ' + data);
    });
  });
}).connect({
  host: '192.168.100.100',
  port: 22,
  username: 'frylock',
  privateKey: require('fs').readFileSync('/here/is/my/key')
});

//// Another Option I've tried  /////////////////////////////////////////

let Client = require('ssh2-sftp-client');
let sftp = new Client();

sftp.connect({
  host: 'server2',
  port: '22',
  username: 'username',
}).then(() => {
  return sftp.list('/pathname');
}).then(data => {
  console.log(data, 'the data info');
}).catch(err => {
  console.log(err, 'catch error');
});

/////////  

4

1 に答える 1