/// <summary>
        /// Добавление сессии к пользователю и поппытка присоединения
        /// </summary>
        /// <param name="connectionInfo">Информация дл подключения к устройству.</param>
        /// <returns>Успешность выполнения операции</returns>
        public OperationResult TryAddSessionUserAndConnect(ClientConnectionInfo connectionInfo)
        {
            var         sshClient   = new SshClient(connectionInfo.Host, connectionInfo.Port, connectionInfo.UserName, connectionInfo.Password);;
            ShellStream?shellStream = null;

            try
            {
                sshClient.ConnectionInfo.Timeout = TimeSpan.FromMinutes(10);
                sshClient.Connect();
                shellStream = sshClient.CreateShellStream("Terminal", 80, 30, 800, 400, 1000);

                var sessionModel = new Session
                {
                    Status                = "Connected",
                    UniqueKey             = connectionInfo.UniqueKey,
                    ShellStream           = shellStream,
                    SshClient             = sshClient,
                    StartSessionDate      = DateTime.Now,
                    LastAccessSessionDate = DateTime.Now,
                    StoredSessionModel    = connectionInfo,
                    OnLineReceive         = OnLineReceived,
                    OnTerminalError       = OnTerminalError
                };

                string?result;
                while ((result = sessionModel.ShellStream.ReadLine(TimeSpan.FromSeconds(0.3))) != null)
                {
                    sessionModel.OnLineReceive?.Invoke(
                        new OperationResult(
                            OperationResultStatus.NoError,
                            result + Environment.NewLine,
                            sessionModel.UniqueKey));
                }

                //sessionModel.Lines.TryAdd(sessionModel.ShellStream.Read());

                shellStream.DataReceived += (obj, e) =>
                {
                    try
                    {
                        var data = Encoding.UTF8.GetString(e.Data);
                        sessionModel.OnLineReceive?.Invoke(
                            new OperationResult(OperationResultStatus.NoError,
                                                data,
                                                sessionModel.UniqueKey));
                    }
                    catch (Exception ex)
                    {
                        //sessionModel.Lines.TryAdd($"An error occurred while receiving data: {ex.Message}");
                        sessionModel.OnTerminalError?.Invoke(
                            new OperationResult(
                                OperationResultStatus.ReceiveDataError,
                                $"An error occurred while receiving data: {ex.Message}", sessionModel.UniqueKey));
                    }
                };

                AddActiveSession(sessionModel);

                sshClient.ErrorOccurred += (obj, e) =>
                {
                    if (obj is SshClient sshClientInner)
                    {
                        if (sshClientInner.IsConnected)
                        {
                            sessionModel.OnTerminalError?.Invoke(new OperationResult(
                                                                     OperationResultStatus.SessionError, $"Session error: {e.Exception.Message}",
                                                                     sessionModel.UniqueKey));
                        }
                    }

                    RemoveSession(sessionModel.UniqueKey);
                };

                var connectResult = new OperationResult(
                    OperationResultStatus.NoError, string.Empty, sessionModel.UniqueKey);
                return(connectResult);
            }
            catch (Exception ex)
            {
                shellStream?.Dispose();
                sshClient?.Dispose();
                return(new OperationResult(
                           OperationResultStatus.ConnectionError, ex.Message, Guid.Empty));
            }
        }
 void AddActiveSession(Session session)
 {
     Sessions.TryAdd(session.UniqueKey, session);
 }