windows - hvordan man programmatisk opretter ssh tunnel i C/C + + cross-platform?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har brug for at oprette forbindelse via TCP til en port, der ligger bag en firewall, der er tilgængelig via en SSH-tunnel. Jeg kan opnå forbindelse ved at åbne en tunnel og hittting den havn, men jeg vil bygge tunnelen ind i min ansøgning.


Derudover vil jeg kunne give automatisk login ved brug af at have autoriseret nøgler på serveren


Dette skal fungere på følgende platforme (i rækkefølge af betydning)



  • iOS (sværeste fordi jeg ikke kan tippe en ssh-tunnel som jeg kan på andre platforme)

  • OS X

  • Linux

  • Windows



Hvad er den nemme måde at gøre dette på? Jeg vil ikke bruge en stor indsats selvfølgelig, da dette ikke er mit kødkød. Men jeg genbruger det, så jeg kan nok passe på at 'gøre tingene rigtigt '

Bedste reference


Men libssh2 er BSD-licenseret og synes at have den nødvendige funktionalitet


Ligner: libssh2\_channel\_direct\_tcpip\_ex bliver opkaldet


Bemærk , at LGPL 'd libssh er et problem, fordi iOS apps skal du statisk linke og KAN IKKE dynamisk linke til biblioteker. Derfor bruger en LGPL' d bibliotek 'min kilde bliver åben kilde.

Andre referencer 1


Libssh er en meget god klient implementering for SSH-protokollen. Jeg har skrevet en blog om dette. Der er også en prøveapplikation, der viser det samme. Vi bruger den samme teknik i MONyog (MySQL skærm). [1] [2] [3]

Andre referencer 2


Der er en kommerciel LIB, hvis du vil kigge på, www.chilkatsoft.com/, det er en genrik C ++ lib for alle sprog. Der er en støtte til SSH tunneling til IOS.

Andre referencer 3


Skelner LGPL mellem at forbinde dynamisk og statisk? Jeg tror det ikke.


Bibliotekskoden (dvs. indlejring af din egen SSH-implementering) ser mest alsidigt ud for mig. Bortset fra det faktum at du måske arver sikkerhedsproblemer.


På MacOSX/Linux/Unix kan du blot påberåbe 'ssh' og antage, at det eksisterer (eller gør det som en forudsætning). På Windows ville du stole på kitt og venner. Jeg tror ikke, det er en god ide.