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

Python Discussion :

Echec de connexion ssh avec paramiko


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 72
    Par défaut Echec de connexion ssh avec paramiko
    Bonjour, j'essaye de pouvoir communiquer avec un serveur grâce au module paramiko. voici les codes correspondants au serveur et au client:
    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
    59
    60
    61
    import socket
    import paramiko
    import threading
    import sys
     
    host_key = paramiko.RSAKey(filename='C:/Users/axel.ch/Desktop/paramiko-master/demos/test_rsa.key')
     
    class Server (paramiko.ServerInterface):
       def _init_(self):
           self.event = threading.Event()
       def check_channel_request(self, kind, chanid):
           if kind == 'session':
               return paramiko.OPEN_SUCCEEDED
           return paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED
       def check_auth_password(self, username, password):
           if (username == 'root') and (password == 'toor'):
               return paramiko.AUTH_SUCCESSFUL
           return paramiko.AUTH_FAILED
     
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.bind(('192.168.1.114', 22))
        sock.listen(100)
        print '[+] Listening for connection ...'
        client, addr = sock.accept()
    except Exception, e:
        print '[-] Listen/bind/accept failed: ' + str(e)
        sys.exit(1)
    print '[+] Got a connection!'
     
    try:
        t = paramiko.Transport(client)
        try:
            t.load_server_moduli()
        except:
            print '[-] (Failed to load moduli -- gex will be unsupported.)'
            raise
        t.add_server_key(host_key)
        server = Server()
        try:
            t.start_server(server=server)
        except paramiko.SSHException, x:
            print '[-] SSH negotiation failed.'
     
        chan = t.accept(20)
        print '[+] Authenticated!'
        print chan.recv(1024)
        chan.send('Yeah i can see this')
        while True:
           command= raw_input("Enter command: ").strip('\n')
           chan.send(command)
           print chan.recv(1024) + '\n'
     
    except Exception, e:
        print '[-] Caught exception: ' + str(e) + ': ' + str(e)
        try:
            t.close()
        except:
            pass
        sys.exit(1)
    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
    import paramiko
    import threading
    import subprocess
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect('192.168.1.114', username='root', password='toor')
    chan = client.get_transport().open_session()
    chan.send('Hey i am connected :) ')
    print chan.recv(1024)
     
    def sftp(local_path,name):
        try:
            transport = paramiko.Transport(('192.168.1.114', 22))
            transport.connect(username = 'root', password = 'toor')
            sftp = paramiko.SFTPClient.from_transport(transport)
            sftp.put(local_path, 'C:/Users/axel.ch/Desktop'+name)
            sftp.close()
            transport.close()
            return '[+] Done'
        except Exception,e:
            return str(e)
     
     
    while True:
     
        command = chan.recv(1024)
        if 'grab' in command:
            grab,name,path = command.split('*')
            chan.send( sftp(path,name) )
     
    client.close
    Le problème arrive lorsque je souhaite transférer un fichier, (Tous mes tests sont en local) j'obtiens ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [+] Listening for connection ...
    [+] Got a connection!
    [+] Authenticated!
    Hey i am connected :) 
    Enter command: grab*nb*C:/Users/axel.ch/Downloads/nb.txt
    Error reading SSH protocol banner
    J'ai recherché sur internet, et j'ai vu à certains endroits que le problème venait d'une mauvaise bannière SSH ne commencant pas par 'SSH-'. Cependant je ne sais pas comment la modifier.
    Merci de votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par stinng Voir le message
    Le problème arrive lorsque je souhaite transférer un fichier, (Tous mes tests sont en local) j'obtiens ce message d'erreur
    Dans une histoire de protocoles, il y a le client (votre script Python) et le serveur.
    Si le serveur retourne une bannière mal formatée ou n'accepte plus de connexions, c'est pas en regardant le code Python que vous allez avancer. Il faut regarder (mettre en place) les logs côté serveur pour voir ce qu'il en pense.
    Ce n'est qu'avec une idée de ce qu'il se passe des deux côtés que vous aller pouvoir avancer. (et éventuellement aller poser une question dans le forum approprié).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 72
    Par défaut
    Voici le log lors de l’exécution du serveur:
    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
    DEBUG:paramiko.transport:starting thread (server mode): 0x38508f0L
    DEBUG:paramiko.transport:Local version/idstring: SSH-2.0-paramiko_2.0.2
    DEBUG:paramiko.transport:Remote version/idstring: SSH-2.0-paramiko_2.0.2
    INFO:paramiko.transport:Connected (version 2.0, client paramiko_2.0.2)
    DEBUG:paramiko.transport:kex algos:[u'diffie-hellman-group1-sha1', u'diffie-hellman-group14-sha1', u'diffie-hellman-group-exchange-sha1', u'diffie-hellman-group-exchange-sha256'] server key:[u'ssh-rsa', u'ssh-dss', u'ecdsa-sha2-nistp256', u'ecdsa-sha2-nistp384', u'ecdsa-sha2-nistp521'] client encrypt:[u'aes128-ctr', u'aes192-ctr', u'aes256-ctr', u'aes128-cbc', u'blowfish-cbc', u'aes192-cbc', u'aes256-cbc', u'3des-cbc', u'arcfour128', u'arcfour256'] server encrypt:[u'aes128-ctr', u'aes192-ctr', u'aes256-ctr', u'aes128-cbc', u'blowfish-cbc', u'aes192-cbc', u'aes256-cbc', u'3des-cbc', u'arcfour128', u'arcfour256'] client mac:[u'hmac-sha2-256', u'hmac-sha2-512', u'hmac-md5', u'hmac-sha1-96', u'hmac-md5-96', u'hmac-sha1'] server mac:[u'hmac-sha2-256', u'hmac-sha2-512', u'hmac-md5', u'hmac-sha1-96', u'hmac-md5-96', u'hmac-sha1'] client compress:[u'none'] server compress:[u'none'] client lang:[u''] server lang:[u''] kex follows?False
    DEBUG:paramiko.transport:Kex agreed: diffie-hellman-group1-sha1
    DEBUG:paramiko.transport:Cipher agreed: aes128-ctr
    DEBUG:paramiko.transport:MAC agreed: hmac-sha2-256
    DEBUG:paramiko.transport:Compression agreed: none
    DEBUG:paramiko.transport:kex engine KexGroup1 specified hash_algo <built-in function openssl_sha1>
    DEBUG:paramiko.transport:Switch to new keys ...
    DEBUG:paramiko.transport:Auth request (type=password) service=ssh-connection, username=root
    INFO:paramiko.transport:Auth granted (password).
    DEBUG:paramiko.transport:[chan 0] Max packet in: 32768 bytes
    DEBUG:paramiko.transport:[chan 0] Max packet out: 32768 bytes
    DEBUG:paramiko.transport:Secsh channel 0 (session) opened.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Si vous voulez coder client et serveur, il va falloir apprendre à déboguer... ou attendre qu'une âme charitable veuille bien passer du temps là dessus.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 72
    Par défaut
    Alors je vais apprendre à déboguer, un bon tutoriel à proposer?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par stinng Voir le message
    Alors je vais apprendre à débuguer, un bon tutoriel à proposer?
    Un peu de recherche sur Internet peut être?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Python 2.X] python matplotlib erreur
    Par hichem0550 dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 29/05/2016, 16h33
  2. Réponses: 5
    Dernier message: 29/08/2014, 10h38
  3. [Erreur][SSH] fcntl(1000, F_SETFL, O_NONBLOCK)
    Par kaymak dans le forum Réseau
    Réponses: 2
    Dernier message: 20/12/2008, 16h29
  4. Gestion des erreurs ssh dans ant
    Par mystar dans le forum ANT
    Réponses: 3
    Dernier message: 19/01/2007, 19h00
  5. Python + Pmw erreur Pmw.initialise(root)
    Par zezitinho dans le forum Tkinter
    Réponses: 5
    Dernier message: 07/04/2006, 13h27

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