2011-02-15 5 views
16

방화벽을 통해 SSH 터널을 통해 액세스 할 수있는 포트에 TCP를 통해 연결해야합니다. 터널을 열고 해당 포트에 연결하여 연결을 얻을 수 있지만이 터널링을 응용 프로그램에 구축하려고합니다.프로그래밍 방식으로 C/C++ 교차 플랫폼에서 ssh 터널을 만드는 방법은 무엇입니까?

은 또한, 나는 (까다로운

이 다음과 같은 플랫폼에서 작동합니다

  • 아이폰 OS (중요한 순서대로) 서버에 인증 된 키를 가지고 사용하여 자동 로그인을 제공 할 수있게하려면 내가
  • OS X의) 다른 플랫폼에서 할 수처럼 나는 SSH 터널을 포크 할 수 없기 때문에
  • 리눅스
  • 윈도우

어떻게해야할까요? 이것이 내 응용 프로그램의 고기가 아니기 때문에 분명히 많은 노력을 기울이고 싶지 않습니다. 그러나 나는 그렇게 다시 사용할 수 있습니다 나는

+0

보셨나요? http://stackoverflow.com/questions/992374/object-oriented-c-library-for-ssh-and-scp? 이것은 정확히 정확한 복제본에 가깝게 보입니다. –

+2

@ Jerry Coffin : Nektarios는 SSH 터널을 요구하고 있지만, 다른 하나는 SSH 라이브러리를 요청하고 있습니다. :) – Teekin

답변

6

을 "올바른 일을 할"정도로 신경 수 있지만 libssh2 BSD 라이센스이며, 기능이

의 모습 필요가있는 것 같습니다 : libssh2_channel_direct_tcpip_ex가 호출 될 것입니다

LGPL의 libssh는 iOS 앱에서 정적으로 링크해야하며 동적으로 라이브러리에 연결할 수 없으므로 LGPL의 libssh가 문제가 있음을 유의하십시오. 따라서 LGPL 라이브러리를 사용하면 내 소스가 오픈 소스가된다는 의미입니다.

+0

(아마도 편향된) 비교 (http://www.libssh2.org/libssh2-vs-libssh.html)를 보면 libssh2가 더 나은 선택 일 수 있습니다. – sstn

+0

나는 또한 non-blocking을위한 libssh2가 최선이라는 것에 동의한다. – Nektarios

+0

LGPL 문제가 정확합니다. 그러나 libssh2 대 libssh 페이지는 구식이므로 잘못되었습니다. libssh는 ECDSA, ECDH kex, GSSAPI 등 http : //www.libssh와 같은 libssh2보다 더 많은 기능을 가지고 있습니다.org/features/ – asn

-1

LGPL은 동적 연결과 정적 연결을 구분합니까? 나는 그렇게 생각하지 않는다.

라이브러리 코드 (즉, 자체 SSH 구현 포함)는 나에게 가장 다용도로 보입니다. 당신이 보안 문제를 상속받을 수 있다는 사실을 제외하고.

MacOSX/Linux/Unix에서는 'ssh'를 호출하여 존재한다고 가정하거나 전제 조건으로 간주 할 수 있습니다. Windows에서는 퍼티와 친구들에게 의존합니다. 나는 그것이 좋은 생각이라고 생각하지 않는다.

+2

LPGL *은 동적으로 및 정적으로 연결을 구분합니다. –

+0

@ Jörgen - 오, 알겠습니다. 나는 그 사실을 전혀 모르고 있었고 그 반대를 맹세 할 수있었습니다. 저는 GPL/LGPL 라이센스 전문가가 아닙니다. 따라서 대부분의 프로그램이 동적으로 사용되기 때문에 LGPL 라이브러리는 일반적으로 (데스크탑/서버에서) 문제가되지 않습니다. – sstn

+2

글쎄, LGPL은 큰 소리로 말하지 않지만, 만약 당신이 함께 조각을 넣어, 그것을 암시. 또한, 다음은 Moglen (FSF의 법적 최상위 개)의 일부 단어입니다 : http://www.spinics.net/lists/xf/msg02311.html (조금 아래로 스크롤하거나 "다른 사람과 정적으로 링크 된 코드"검색). 그는 "다른 코드에 정적으로 링크 된 코드는 관련된 코드의 파생물입니다."라고 말했습니다. LGPL은 귀하가 파생적인 작품을 공개하도록 요구하기 때문에 오한이 있습니다. –

0

www.chilkatsoft.com/을 보길 원한다면 상용 LIB가 있습니다. 모든 언어에 대한 genric C++ lib이며, 거기에는 IOS 용 SSH 터널링에 대한 지원이 있습니다.

3

Libssh은 SSH 프로토콜에 대한 클라이언트 구현이 매우 뛰어납니다. 나는 이것에 a blog를 썼다. 동일한 내용을 보여주는 샘플 응용 프로그램도 있습니다. 우리는 MONyog (MySQL 모니터)에서 동일한 기술을 사용합니다.

관련 문제