Возможно, чтобы клиент C# SSH общался с сервером Nodejs SSH?C#

Место общения программистов C#
Ответить
Anonymous
 Возможно, чтобы клиент C# SSH общался с сервером Nodejs SSH?

Сообщение Anonymous »

У меня есть приложение C#, которое необходимо запустить определенные команды на кусочке аппаратного обеспечения над SSH. Приложение использует ssh.net для создания подключения, отправить команду и прочитать результат. У меня есть это работа, если я подключаюсь к своей локальной машине, используя OpenSsh. Наконец, я хотел пойти еще дальше и настроить свой собственный SSH -сервер, чтобы я мог моделировать несколько аппаратных устройств одновременно (необходимо моделировать наличие 50+ устройств в SSH в SSH). < /p>

Для этого я настраиваю простой SSH -сервер с использованием Nodejs и пакета SSH2 < /code>. До сих пор у меня подключен клиент, аутентифицированный (все подключения на данный момент принимаются), и я вижу создается объект сеанса . Хотя там, где я попадаю в стену, с выполнением команд, отправленных клиентом. Я заметил, что SSH2 имеет событие для exec в объекте Session , но это никогда не запускается (независимо от того, что я вкладываю в ssh.net от shellstream ).

Клиент -код C#, который инициирует соединение (следующее (следующее (следующее (следующее (следующее (следующее (следующее (следующее (следующее (следующее (следующее.

Код: Выделить всё

command< /code> уже определено, что выполняется командная строка): < /p>

using(SshClient client = new SshClient(hostname, port, username, password))
{
try
{
client.ErrorOccurred += Client_ErrorOccurred;
client.Connect();

ShellStream shellStream = client.CreateShellStream("xterm", Columns, Rows, Width, Height, BufferSize, terminalModes);

var initialPrompt = await ReadDataAsync(shellStream);

// The command I write to the stream will get executed on OpenSSH
// but not on the nodejs SSH server
shellStream.WriteLine(command);
var output = await ReadDataAsync(shellStream);
var results = $"Command: {command} \nResult: {output}";

client.Disconnect();

Console.WriteLine($"Prompt: {initialPrompt} \n{results}\n");
}
catch (Exception ex)
{
Console.WriteLine($"Exception during SSH connection: {ex.ToString()}");
}
}
< /code>

Код сервера Nodejs, который настраивает сервер SSH2: < /p>

new ssh2.Server({
hostKeys: [fs.readFileSync('host.key')]
}, function(client) {
console.log('Client connected!');

client.on('authentication', function(ctx) {
ctx.accept();
}).on('ready', function() {
console.log('Client authenticated!');

client.on('session', function(accept, reject) {
var session = accept();

// Code gets here but never triggers the exec
session.once('exec', function(accept, reject, info) {
console.log('Client wants to execute: ' + inspect(info.command));
var stream = accept();
stream.write('returned result\n');
stream.exit(0);
stream.end();
});
});
}).on('end', function() {
console.log('Client disconnected');
});
}).listen(port, '127.0.0.1', function() {
console.log('Listening on port ' + this.address().port);
});
Я видел различные примеры ssh2 клиента, вызывающие функцию client.exec , но я предполагал, что это не имело значения, что мой клиент не использовал пакет узлов ssh2 . Есть ли что -то, чего мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/533 ... ssh-server
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»