IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Renci.SshNet /ConnectionInfo.cs . Connaitre la clé utilisée après connexion ? [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 82
    Par défaut Renci.SshNet /ConnectionInfo.cs . Connaitre la clé utilisée après connexion ?
    Bonjour a tous,


    Je suis en train de développer une petite appplication qui a pour but de faire 2 choses différence selon la clé ppk utilisée. Je met connecte au client avec ConnectionInfo.cs en lui attribuant 2 clés différentes avec des droits différents.
    Mon but est de connaitre la clé qui est "passée" lors de la connexion afin de savoir quels sont les droits pour la connexion en cours. (pour le moment le username est le même pour les 2 clés)

    Savez vous si c'est possible? Merci pour votre aide

    Un extrait du code concerné sera ppeut-être plus clair.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    public class SshConnection
    {
        private string _hostname;
        private string _username;
        private PrivateKeyFile _privateKeyPath1;
        private PrivateKeyFile _privateKeyPath2;
        private SshClient clientSSH;
     
        public SshConnection(string hostname, string username, PrivateKeyFile privateKeyFile1, PrivateKeyFile privateKeyFile2)
        {
            _hostname = hostname;
            _username = username;
            _privateKeyFile1 = privateKeyFile1;
            _privateKeyFile2 = privateKeyFile2;
        }
     
        public void Connect()
        {
     
            var methods = new List<AuthenticationMethod>();
            methods.Add(new PrivateKeyAuthenticationMethod(_username, _privateKeyFile1));
            methods.Add(new PrivateKeyAuthenticationMethod(_username, _privateKeyFile2));
     
            var connectionInfo = new ConnectionInfo(_hostname, 22, _username, methods.ToArray());
            clientSSH = new SshClient(connectionInfo); 
     
                clientSSH.Connect();
                if (clientSSH.IsConnected)
               {
                 if(C'est _privateKeyFile1)
                 {
                  //Action a faire avec _privateKeyFile2
                 }
                  else
                {      //C'est _privateKeyFile2 qui est utilisée
                        // Action a faire avec _privateKeyFile2
                }
              }        
        }
    }

  2. #2
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut
    Bonjour,
    Il est possible de déterminer quelle clé a été utilisée pour établir la connexion SSH.
    Voici une idée pour atteindre votre objectif en distinguant les actions en fonction de la clé privée utilisée :
    Séparer les connexions selon la clé utilisée : Vous pouvez créer deux méthodes de connexion distinctes, chacune utilisant une clé privée différente.
    Utiliser des indicateurs ou attributs pour identifier la clé utilisée : Une fois connecté, vous pouvez définir un indicateur pour savoir quelle clé a été utilisée.
    Voici une version modifiée de votre code pour vous donner une idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    public class SshConnection
    {
        private string _hostname;
        private string _username;
        private PrivateKeyFile _privateKeyFile1;
        private PrivateKeyFile _privateKeyFile2;
        private SshClient clientSSH;
        private bool _isPrivateKey1Used; // Indicateur pour la clé utilisée
     
        public SshConnection(string hostname, string username, PrivateKeyFile privateKeyFile1, PrivateKeyFile privateKeyFile2)
        {
            _hostname = hostname;
            _username = username;
            _privateKeyFile1 = privateKeyFile1;
            _privateKeyFile2 = privateKeyFile2;
        }
     
        public void ConnectWithPrivateKey1()
        {
            var methods = new List<AuthenticationMethod> { new PrivateKeyAuthenticationMethod(_username, _privateKeyFile1) };
            var connectionInfo = new ConnectionInfo(_hostname, 22, _username, methods.ToArray());
            clientSSH = new SshClient(connectionInfo); 
     
            clientSSH.Connect();
            if (clientSSH.IsConnected)
            {
                _isPrivateKey1Used = true;
                // Actions spécifiques pour la clé 1
            }
        }
     
        public void ConnectWithPrivateKey2()
        {
            var methods = new List<AuthenticationMethod> { new PrivateKeyAuthenticationMethod(_username, _privateKeyFile2) };
            var connectionInfo = new ConnectionInfo(_hostname, 22, _username, methods.ToArray());
            clientSSH = new SshClient(connectionInfo); 
     
            clientSSH.Connect();
            if (clientSSH.IsConnected)
            {
                _isPrivateKey1Used = false;
                // Actions spécifiques pour la clé 2
            }
        }
     
        public void PerformActionBasedOnKey()
        {
            if (_isPrivateKey1Used)
            {
                // Actions pour PrivateKeyFile1
            }
            else
            {
                // Actions pour PrivateKeyFile2
            }
        }
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 82
    Par défaut
    Bonjour,

    Eneffet j'ai oté pour cette solution de "contournement" et ca fonctionne. Mercii

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre les ports utilisés quand on n'est pas root
    Par Longrais dans le forum Administration système
    Réponses: 4
    Dernier message: 30/03/2007, 11h12
  2. Connaitre les service utilisant Apache
    Par FlyByck dans le forum Apache
    Réponses: 2
    Dernier message: 28/01/2006, 22h55
  3. Connaitre driver reseau utilisé sur son linux
    Par oligig dans le forum Matériel
    Réponses: 3
    Dernier message: 20/10/2005, 14h14
  4. Logiciel permettant de connaitre les fichiers utilisés
    Par Mut dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 14/02/2004, 17h19
  5. [LG]Connaitre l'OS utilisé avec Pascal
    Par Ilove dans le forum Langage
    Réponses: 17
    Dernier message: 05/02/2004, 20h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo