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');
});
/////////