NodeJS Библиотека SSH2 Невозможно запросить псевдо-терминал - PullRequest
0 голосов
/ 03 марта 2020

Я попробовал решение из этой записи , но не решил проблему.

Я пытаюсь подключиться к поставщику SFTP через прокси. Ниже скрипт работает до conn.shell. Я попытался поместить блок conn.shell в обработчик событий session, но событие session вообще не запускается. Ошибка скрипта с Error: Unable to request pseudo-terminal.

const credentials = require('./restricted/credentials');

var socks = require('socksv5'),
    SSHClient = require('ssh2').Client;

socks.connect({
  host: credentials.sfmcSFTP.HOST,
  port: credentials.sfmcSFTP.PORT,
  proxyHost: credentials.thdProxy.HOST,
  proxyPort: credentials.thdProxy.PORT,
  auths: [ socks.auth.None(), socks.auth.UserPassword(credentials.thdProxy.USER, credentials.thdProxy.PASSWORD) ]
}, function(socket) {
    console.log('socks connection');
    var conn = new SSHClient();
    conn.on('ready', function() {
            console.log('client ready');
            conn.shell(function(err, stream) {
                if (err) throw err;
                // ...
                conn.end();
            });
        }).on('session', (accept, reject) => {
            console.log('session');
            var session = accept();
            console.log('accept');
            session.on('pty', (accept, reject, info) => {
                console.log('pty');
                accept();
            }).on('shell', (accept, reject, info) => {
                console.log('shell');
            });
        }).connect({
            sock: socket,
            username: credentials.sfmcSFTP.USER,
            password: credentials.sfmcSFTP.PASSWORD,
            algorithms: {
                serverHostKey: ['ssh-rsa', 'ssh-dss']
            }
        });
});
...