Подтвердить что ты не робот

Как программно создать туннель ssh в кросс-платформе C/С++?

Мне нужно подключиться через TCP к порту, который находится за брандмауэром, доступным через туннель SSH. Я могу достичь соединения, открыв туннель и hittting этот порт, но я хочу, чтобы построить это туннелирование в моем приложении.

Кроме того, я хочу иметь возможность автоматического входа в систему с использованием разрешенных ключей на сервере

Это должно работать на следующих платформах (в порядке важности)

  • iOS (сложнее, потому что я не могу развить туннель ssh, как я могу, на других платформах)
  • OS X
  • Linux
  • для Windows

Какой простой способ сделать это? Я не хочу тратить много сил, потому что это не та часть моего приложения. Но я буду использовать его, чтобы я мог заботиться о том, чтобы "все было в порядке"

4b9b3361

Ответ 1

Но libssh2 является лицензированным BSD и, как представляется, имеет необходимую функциональность

Похож: libssh2_channel_direct_tcpip_ex будет вызов

Примечание, что LGPL'd libssh является проблемой, потому что в приложениях iOS вы ДОЛЖНЫ статически ссылаться и НЕ МОЖЕТ динамически связываться с библиотеками. Поэтому использование библиотеки LGPL'd означает, что мой источник становится открытым исходным кодом.

Ответ 2

Libssh - очень хорошая клиентская реализация для протокола SSH. Я написал блог об этом. Существует также пример приложения, демонстрирующего то же самое. Мы используем ту же технику в MONyog (монитор MySQL).

Ответ 3

Существует коммерческая LIB, если вы хотите посмотреть, www.chilkatsoft.com/, это genric С++ lib для всех языков, в ней есть поддержка SSH-туннелирования для IOS.

Ответ 4

Разделяет ли LGPL динамическое и статическое связывание? Я так не думаю.

Код библиотеки (т.е. встраивание вашей собственной реализации SSH) выглядит наиболее универсальным для меня. Кроме того, что вы можете наследовать проблемы безопасности.

В MacOSX/Linux/Unix вы можете просто вызвать 'ssh' и предположить, что он существует (или сделать его как предварительное условие). В Windows вы будете полагаться на шпаклевку и друзей. Я не думаю, что это хорошая идея.