Я попробовал решение из этой записи , но не решил проблему.
Я пытаюсь подключиться к поставщику 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']
}
});
});