Node.js 错误:所有配置的身份验证方法都失败级别:';客户端身份验证&x27;

Node.js 错误:所有配置的身份验证方法都失败级别:';客户端身份验证&x27;,node.js,ssh,Node.js,Ssh,我正在使用node.js ssh2模块。我已经通过执行命令“npm install ssh2”安装了ssh2模块。但是,当我使用ssh2连接到远程服务器时,它总是输出错误: [错误:所有配置的身份验证方法都失败]级别:“客户端身份验证” 这是我的密码 var Client = require('ssh2').Client var conn = new Client(); var option = { host: '10.171.65.154', port: 22, use

我正在使用node.js ssh2模块。我已经通过执行命令“npm install ssh2”安装了ssh2模块。但是,当我使用ssh2连接到远程服务器时,它总是输出错误: [错误:所有配置的身份验证方法都失败]级别:“客户端身份验证”

这是我的密码

var Client = require('ssh2').Client
var conn = new Client();
var option = {
    host: '10.171.65.154',
    port: 22,
    username: 'root',
    password: '123456'
};

conn.on('ready', function(){
    console.log('Client :: ready');
    conn.sftp(function(err, sftp){
        if(err) throw err;
        sftp.readdir('home', function(err, list){
            if(err) throw err;
            console.dir(list);
            conn.end();
        });
    });
}).on('error', function(err){
    console.log(err);
}).connect(option);
但是,我无法成功连接。我确信用户名和密码正确,并且我可以通过SecureCRT成功连接

它总是输出错误:
[错误:所有配置的身份验证方法都失败]级别:“客户端身份验证”

可能,您必须处理键盘交互身份验证(与密码不同)。试着这样做:

connection.on('ready', function(){
    console.log("Connected!");
}).on('error', function(err){
    console.error(err);
}).on('keyboard-interactive', function (name, descr, lang, prompts, finish) {
    // For illustration purposes only! It's not safe to do this!
    // You can read it from process.stdin or whatever else...
    var password = "your_password_here";
    return finish([password]);

    // And remember, server may trigger this event multiple times
    // and for different purposes (not only auth)
}).connect({
    host: "your.host.or.ip",
    port: 22,
    username: "your_login",
    tryKeyboard: true
});

也许您的服务器不支持密码验证,而是使用
键盘交互
手动“强制”输入密码。在配置对象中设置
tryKeyboard:true
,并侦听
键盘交互
事件(有关如何正确处理此事件的信息,请参阅ssh2文档)。我的服务器支持密码身份验证。如果我在Java代码中使用jsch和相同的配置,它可以成功连接。我认为jsch将通过搜索“password:”交互式提示,尝试自动处理基于
键盘交互式
的密码验证。试试我的建议。密码验证机制和ssh中带有“password:”提示符的
键盘交互机制是两件不同的事情。我只是尝试处理键盘交互事件。但是,我不知道它的用法。我这样尝试:
conn.on('keyboard-interactive',{prompt:'password:',echo:true},function(){console.log('yy here');});然后抛出TypeError:侦听器必须是函数。我该怎么做?非常感谢。我对ssh2身份验证知之甚少。而且我真的不知道如何处理键盘交互。我还有很多东西要学习,稍后会尝试。