微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 Node SSH 2 身份验证失败?

如何解决为什么我的 Node SSH 2 身份验证失败?

我想建立一个到 HPe Comware 5510 的节点 ssh2 连接。我可以连接到其他设备,但不能连接到这个设备。我知道有不同类型的身份验证,但它们总是失败。

这是我的代码

const router =  require("express").Router();

var Client = require('ssh2').Client;


router.post("/",(req,res)=>{

    let json = req.body;
    console.log(json)
 
    var conn = new Client();
    conn.on('ready',function() {
        console.log('Client :: ready');
        let count = 0;
        let result = {};
        let cmd = null;
        let block = ""

        conn.shell((err,stream) => {
                if (err) res.json({err:err})
                stream.on('close',() => {
                    console.log('Stream :: close');
                    conn.end();
                res.json(result)
                }).on('data',(data) => {
                data = data.toString();

                    console.log('OUTPUT: ' + data);
                

                if(cmd) {
                    result[count + "- "+ cmd.value] += data;
                }

                if(data.endsWith("# ")) {
                    cmd = json.cmds[count];
                    count++;
                    if (!cmd) return stream.end("exit\n");

                    if (cmd.type == "cmd") stream.write(cmd.value + "\n");
                    if (cmd.type == "block") stream.write(cmd.value + "\n");

                }
                });


        });
        

    }).on('keyboard-interactive',function (name,descr,lang,prompts,finish) {
            var password = json.credentials.password;
            return finish([password]);
    }).on('error',function(err) {
        console.log(err);
        res.json({err:err})
    
    })
    .connect({
        host: json.ip,port: 22,username: json.credentials.username,password: json.credentials.password,tryKeyboard: true
                
    }); 
})


我认为问题在于它从不执行键盘交互代码

当我尝试连接时出现此错误

{ Error: All configured authentication methods Failed
    at doNextAuth (/home/ccuartero/node/autocmd/node_modules/ssh2/lib/client.js:413:17)
    at tryNextAuth (/home/ccuartero/node/autocmd/node_modules/ssh2/lib/client.js:484:5)
    at SSH2Stream.onUSERAUTH_FAILURE (/home/ccuartero/node/autocmd/node_modules/ssh2/lib/client.js:597:5)
    at SSH2Stream.emit (events.js:198:13)
    at parsePacket (/home/ccuartero/node/autocmd/node_modules/ssh2-streams/lib/ssh.js:3682:10)
    at SSH2Stream._transform (/home/ccuartero/node/autocmd/node_modules/ssh2-streams/lib/ssh.js:701:13)
    at SSH2Stream.Transform._read (_stream_transform.js:190:10)
    at SSH2Stream._read (/home/ccuartero/node/autocmd/node_modules/ssh2-streams/lib/ssh.js:253:15)
    at SSH2Stream.Transform._write (_stream_transform.js:178:12)
    at doWrite (_stream_writable.js:415:12) level: 'client-authentication' }

也通过设置调试函数回调我得到这个日志

DEBUG: Local ident: 'SSH-2.0-ssh2js0.4.10'
DEBUG: Client: Trying 192.168.12.187 on port 22 ...
DEBUG: Client: Connected
DEBUG: Parser: IN_INIT
DEBUG: Parser: IN_GREETING
DEBUG: Parser: IN_HEADER
DEBUG: Remote ident: 'SSH-2.0-Comware-7.1.070'
DEBUG: Outgoing: Writing KEXINIT
DEBUG: Parser: IN_PACKETBEFORE (expecting 8)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: pktLen:612,padLen:11,remainLen:608
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: IN_PACKETDATAAFTER,packet: KEXINIT
DEBUG: Comparing KEXINITs ...
DEBUG: (local) KEX algorithms: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha1
DEBUG: (remote) KEX algorithms: ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
DEBUG: KEX algorithm: ecdh-sha2-nistp256
DEBUG: (local) Host key formats: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa
DEBUG: (remote) Host key formats: ssh-rsa
DEBUG: Host key format: ssh-rsa
DEBUG: (local) Client->Server ciphers: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm,aes128-gcm@openssh.com,aes256-gcm,aes256-gcm@openssh.com
DEBUG: (remote) Client->Server ciphers: aes128-ctr,AEAD_AES_128_GCM,AEAD_AES_256_GCM,aes128-cbc,3des-cbc,aes256-cbc,des-cbc
DEBUG: Client->Server Cipher: aes128-ctr
DEBUG: (local) Server->Client ciphers: aes128-ctr,aes256-gcm@openssh.com
DEBUG: (remote) Server->Client ciphers: aes128-ctr,des-cbc
DEBUG: Server->Client Cipher: aes128-ctr
DEBUG: (local) Client->Server HMAC algorithms: hmac-sha2-256,hmac-sha2-512,hmac-sha1
DEBUG: (remote) Client->Server HMAC algorithms: hmac-sha2-256,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96
DEBUG: Client->Server HMAC algorithm: hmac-sha2-256
DEBUG: (local) Server->Client HMAC algorithms: hmac-sha2-256,hmac-sha1
DEBUG: (remote) Server->Client HMAC algorithms: hmac-sha2-256,hmac-md5-96
DEBUG: Server->Client HMAC algorithm: hmac-sha2-256
DEBUG: (local) Client->Server compression algorithms: none,zlib@openssh.com,zlib
DEBUG: (remote) Client->Server compression algorithms: none,zlib,zlib@openssh.com
DEBUG: Client->Server compression algorithm: none
DEBUG: (local) Server->Client compression algorithms: none,zlib
DEBUG: (remote) Server->Client compression algorithms: none,zlib@openssh.com
DEBUG: Server->Client compression algorithm: none
DEBUG: Outgoing: Writing KEXECDH_INIT
DEBUG: Parser: IN_PACKETBEFORE (expecting 8)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: pktLen:380,padLen:7,remainLen:376
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: IN_PACKETDATAAFTER,packet: KEXECDH_REPLY
DEBUG: Checking host key format
DEBUG: Checking signature format
DEBUG: Verifying host fingerprint
DEBUG: Host accepted by default (no verification)
DEBUG: Verifying signature
DEBUG: Outgoing: Writing NEWKEYS
DEBUG: Parser: IN_PACKETBEFORE (expecting 8)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: pktLen:12,padLen:10,remainLen:8
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: IN_PACKETDATAAFTER,packet: NEWKEYS
DEBUG: Outgoing: Writing SERVICE_REQUEST (ssh-userauth)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:28,remainLen:16
DEBUG: Parser: IN_PACKETDATA
DEBUG: Parser: Decrypting
DEBUG: Parser: HMAC size:32
DEBUG: Parser: IN_PACKETDATAVERIFY
DEBUG: Parser: Verifying MAC
DEBUG: Parser: IN_PACKETDATAVERIFY (Valid HMAC)
DEBUG: Parser: IN_PACKETDATAAFTER,packet: SERVICE_ACCEPT
DEBUG: Outgoing: Writing USERAUTH_REQUEST (none)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:28,padLen:13,packet: USERAUTH_FAILURE
DEBUG: Client: none auth Failed
DEBUG: Outgoing: Writing USERAUTH_REQUEST (password)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:28,packet: USERAUTH_FAILURE
DEBUG: Client: password auth Failed
DEBUG: Outgoing: Writing USERAUTH_REQUEST (keyboard-interactive)
DEBUG: Parser: IN_PACKETBEFORE (expecting 16)
DEBUG: Parser: IN_PACKET
DEBUG: Parser: Decrypting
DEBUG: Parser: pktLen:28,packet: USERAUTH_FAILURE
DEBUG: Client: keyboard-interactive auth Failed


似乎应该执行键盘交互回调。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。