Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > Autres
Autres Vos questions sur les autres bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/10/2012, 16h42   #1
vravier
Membre du Club
 
Homme Vincent Ravier
Développeur informatique
Inscription : décembre 2011
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme Vincent Ravier

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 54
Points : 58
Points : 58
Par défaut [libssh2] mise en place d'un tunnel SSH

Bonjour,

Je m'intéresse au protocole SSH pour la sécurisation de la transmission de données (O Rly?), je pense avoir bien potassé le sujet et quelques documentations. J'ai un peu bidouillé quelques trucs de base pour mettre en pratique, comme configurer le serveur SSH, me connecter en utilisant des clés publiques/privées, exécuter avec succès quelques exemples de libssh2. Jusque là tout va bien, je comprends bien tout ce qui se passe.
Mon but ultime étant d'utiliser un tunnel SSH pour accéder à un SGBD postgresql, une page de leur doc explique bien le principe. Pour l'implémentation dans un client, j'ai commencé à regarder l'exemple "tcpip-forward.c" de la lib. Et là, c'est le drame. Je n'arrive pas à me représenter ce qui est fait au niveau des connexions serveur distant-serveur ssh-client dans ce pavé:
Code :
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
    printf("Asking server to listen on remote %s:%d\n", remote_listenhost,
        remote_wantport);
 
    listener = libssh2_channel_forward_listen_ex(session, remote_listenhost,
 
        remote_wantport, &remote_listenport, 1);
    if (!listener) {
        fprintf(stderr, "Could not start the tcpip-forward listener!\n"
                "(Note that this can be a problem at the server!"
                " Please review the server logs.)\n");
        goto shutdown;
    }
 
    printf("Server is listening on %s:%d\n", remote_listenhost,
        remote_listenport);
 
    printf("Waiting for remote connection\n");
    channel = libssh2_channel_forward_accept(listener);
 
    if (!channel) {
        fprintf(stderr, "Could not accept connection!\n"
                "(Note that this can be a problem at the server!"
                " Please review the server logs.)\n");
        goto shutdown;
    }
 
    printf("Accepted remote connection. Connecting to local server %s:%d\n",
        local_destip, local_destport);
    forwardsock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    sin.sin_family = AF_INET;
    sin.sin_port = htons(local_destport);
    if (INADDR_NONE == (sin.sin_addr.s_addr = inet_addr(local_destip))) {
        perror("inet_addr");
        goto shutdown;
    }
    if (-1 == connect(forwardsock, (struct sockaddr *)&sin, sinlen)) {
        perror("connect");
        goto shutdown;
    }
 
    printf("Forwarding connection from remote %s:%d to local %s:%d\n",
        remote_listenhost, remote_listenport, local_destip, local_destport);
J'essaie de m'aider des noms de variables, mais ça ne m'éclaire pas vraiment...

Avis à ceux qui sont déjà passé par là
vravier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 13h50   #2
vravier
Membre du Club
 
Homme Vincent Ravier
Développeur informatique
Inscription : décembre 2011
Messages : 54
Détails du profil
Informations personnelles :
Nom : Homme Vincent Ravier

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 54
Points : 58
Points : 58
Ha! Je n'étais pas sur le bon exemple! En fouinant dans l'API, je suis tombé sur la fonction libssh2_channel_direst_tcpip_ex, qui sert à rediriger le flux d'une connexion sur une autre en passant par un tunnel SSH. L'exemple qui l'utilise est direct_tcpip.c. Beaucoup plus compréhensible, en partant de là j'ai pu faire mon test de tunnel SSH pour une connexion à un serveur PostgreSQL.

My bad!
vravier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h04.


 
 
 
 
Partenaires

Hébergement Web