2014-11-26 2 views
0

Я установил пакет ssh2 для узла, но не могу заставить работать аутентификацию на основе хоста.Аутентификация на основе хоста ssh с использованием nodejs

var Connection = require('./node_modules/bis-package/node_modules/ssh2'); 
var conn = new Connection(); 

conn.on('ready', function() { 
    conn.exec('cmviewcl -v -f line', function(err, stream) { 
     if (err) throw err; 

     stream.on('exit', function(code, signal) { 
      console.log('Stream :: exit :: code: ' + code + ', signal: ' + signal); 
     }).on('close', function() { 
      console.log('Stream :: close'); 
      conn.end(); 
     }).on('data', function(data) { 
      console.log('STDOUT: ' + data); 
     }).stderr.on('data', function(data) { 
      console.log('STDERR: ' + data); 
     }); 
    }); 
}).connect({ 
    host: 'server', 
    port: 22, 
    username: 'root' 
}); 

Я получаю следующую ошибку

Error: Authentication failure. Available authentication methods: publickey,gssapi-with-mic,password,hostbased 
    at Connection._tryNextAuth (/opt/bis/node/node_modules/bis-package/node_modules/ssh2/lib/Connection.js:1010:13) 
    at onUSERAUTH_FAILURE (/opt/bis/node/node_modules/bis-package/node_modules/ssh2/lib/Connection.js:2449:8) 
    at Parser.<anonymous> (/opt/bis/node/node_modules/bis-package/node_modules/ssh2/lib/Connection.js:141:5) 
    at Parser.emit (events.js:98:17) 
    at Parser.parsePacket (/opt/bis/node/node_modules/bis-package/node_modules/ssh2/lib/Parser.js:488:12) 
    at Parser.execute (/opt/bis/node/node_modules/bis-package/node_modules/ssh2/lib/Parser.js:249:14) 
    at Socket.<anonymous> (/opt/bis/node/node_modules/bis-package/node_modules/ssh2/lib/Connection.js:536:18) 
    at Socket.emit (events.js:95:17) 
    at Socket.<anonymous> (_stream_readable.js:748:14) 
    at Socket.emit (events.js:92:17) 

Мы используем проверку подлинности на основе хоста, который позволяет нам пароль бесплатно логины. В Perl я использую следующее:

my($SSH) = "/usr/bin/ssh -t -o PreferredAuthentications=hostbased 2>/dev/null"; 
$run->run(map { qq{$SSH $_ "$CMD"} } @hosts); 

Я не знаю, как я мог бы сделать это с nodejs ssh2 пакета. Любая идея, как я мог это сделать?

ответ

1

Пока нет поддержки для хост-систем аутентификации. Я планирую добавить поддержку для него в следующем следующем выпуске. Соответствующий выпуск - here.

+0

Спасибо. Любая запланированная дата уже? – Chris

+0

Еще нет, недавно я сделал довольно большой [рефактор] (https://github.com/mscdex/ssh2/tree/rewrite) и в процессе написания тестов. После этого я планирую добавить поддержку hosthased auth, ключи PuTTY и, возможно, поддержку еще нескольких расширений openssh. – mscdex

+0

спасибо. Отличная работа, которую вы сделали! – Chris

Смежные вопросы