Нативное подключение к ssh C#

147
15 октября 2021, 00:30

Как подключится к ssh с помощью C# без использования сторонних библиотек? Нужно просто подключится по ssh к серверу и выполнить команду. Использование сторонних библиотек запрещено системой. Есть ли нативный способ для этого?

Самый лучший вариант этот просто использовать plink из пакета putty.

Пример кода подключения ssh и получение списка баз данных mysql

class Program
{
    static void Main(string[] args)
    {
        Process plink = new Process();
        plink.StartInfo.CreateNoWindow = false;
        plink.StartInfo.UseShellExecute = false;
        plink.StartInfo.ErrorDialog = false;
        plink.StartInfo.RedirectStandardOutput = true;
        plink.StartInfo.RedirectStandardInput = true;
        plink.StartInfo.RedirectStandardError = true;
        plink.EnableRaisingEvents = true;
        string ipAddr = "";
        string userLogin = "";
        string userPass = "";
        plink.StartInfo.Arguments = string.Format("-ssh {0} -l {1} -pw {2}", ipAddr, userLogin, userPass);
        plink.StartInfo.FileName = "C:\\Program Files\\PuTTY\\plink.exe";
        plink.Start();
        ReadStream(plink.StandardOutput);
        ReadStream(plink.StandardError);
        string MysqlUser = "";
        string MysqlPass = "";
        plink.StandardInput.WriteLine(string.Format("mysql -u {0} -p\"{1}\"", MysqlUser, MysqlPass));
        plink.StandardInput.WriteLine("show databases;");
        plink.StandardInput.WriteLine("exit;");
        plink.StandardInput.Close();
    }
    private static void ReadStream(StreamReader reader)
    {
        new Thread(() =>
        {
            while (true)
            {
                int current;
                while ((current = reader.Read()) >= 0)
                    Console.Write((char)current);
            }
        }).Start();
    }
}
Answer 1

Использование сторонних библиотек запрещено системой. Есть ли нативный способ для этого?

Нет.

SSH - это технология для удалённого взаимодействия из мира *nix. А, .NET стал кроссплатформенным сравнительно недавно и многое в нём ещё не поддерживается из коробки.

Поэтому без дополнительных библиотек (например, SSH.NET) не обойтись.

Альтернативный вариант. Взять консольный SSHrkbtyn (например plink из пакета putty) и попробовать запустить его в туннельном режиме. Но, это всё равно не коробочный вариант.

READ ALSO
Трансформация xsd средствами C#

Трансформация xsd средствами C#

Возможно ли используя C# преобразовать/трансформировать xsd файл к промежуточному виду? Под промежуточным видом имеется ввиду например удаление...

84
Запустить генерацию один раз для нескольких тестов NUnit

Запустить генерацию один раз для нескольких тестов NUnit

Подскажите пожалуйста, можно ли как-то объединить тесты, что бы несколько тестов запускали 1 метод и дожидались его выполненияСуть такая:...

296
Получить значение url из браузера

Получить значение url из браузера

После открытия браузера при помощи

140