Necesito conectarme a través de TCP a un puerto que está detrás de un firewall, accesible a través de un túnel SSH. Puedo lograr la conexión abriendo un túnel y accediendo a ese puerto, pero quiero construir este túnel en mi aplicación.
Además, quiero poder proporcionar un inicio de sesión automático mediante el uso de claves autorizadas en el servidor
Esto debe funcionar en las siguientes plataformas (en orden de importancia)
- iOS (más complicado porque no puedo bifurcar un túnel ssh como puedo en otras plataformas)
- sistema operativo X
- linux
- ventanas
¿Cuál es la manera fácil de hacer esto? Obviamente, no quiero gastar mucho esfuerzo, ya que esta no es la esencia de mi aplicación. Pero lo reutilizaré para que me importe lo suficiente como para “hacer las cosas bien”.
Nectarios
Pero libssh2 tiene licencia BSD y parece tener la funcionalidad necesaria
Parece: libssh2_channel_direct_tcpip_ex será la llamada
Nota que LGPL’d libssh es un problema porque en las aplicaciones iOS DEBE vincular estáticamente y NO PUEDE vincular dinámicamente a las bibliotecas. Por lo tanto, usar una biblioteca LGPL significa que mi fuente se convierte en fuente abierta.
-
Si observa la comparación (probablemente sesgada) (libssh2.org/libssh2-vs-libssh.html), libssh2 podría ser una mejor opción.
– sstn
15 de febrero de 2011 a las 19:59
-
También estoy de acuerdo en que libssh2 incluso para no bloquear es lo mejor.
– Nectarios
15 de febrero de 2011 a las 21:22
-
El problema LGPL es correcto. Sin embargo, la página libssh2 vs libssh está desactualizada y es incorrecta. libssh tiene muchas más características que libssh2 como ECDSA, ECDH kex, GSSAPI, etc. libssh.org/features
– asn
19 de noviembre de 2013 a las 15:59
libre es una muy buena implementación de cliente para el protocolo SSH. he escrito un blog en este. También hay una aplicación de muestra que demuestra lo mismo. Usamos la misma técnica en MONYog (Monitor MySQL).
-
El blog ya no existe y todas las instantáneas de Wayback Machine, excepto una, fallaron. Puedes leer este blog en Wayback Machine en:web.archive.org/web/20120917061334/http://www.webyog.com/blog/…
– Moshé Rubín
2 de febrero de 2021 a las 6:53
Hay una LIB comercial si quiere echarle un vistazo, www.chilkatsoft.com/, es una librería genérica de C++ para todos los idiomas, en ella hay soporte para túneles SSH para IOS.
¿La LGPL diferencia entre enlazar de forma dinámica y estática? No me parece.
El código de la biblioteca (es decir, incrustar su propia implementación de SSH) me parece más versátil. Excepto el hecho de que podrías heredar problemas de seguridad.
En MacOSX/Linux/Unix, simplemente puede invocar ‘ssh’ y asumir que existe (o hacerlo como condición previa). En Windows, confiaría en masilla y amigos. No creo que sea una buena idea.
¿Has consultado: stackoverflow.com/questions/992374/… ? Esto se parece bastante a un duplicado exacto…
– Jerry Ataúd
15 de febrero de 2011 a las 18:16
@Jerry Coffin: Bueno, Nektarios solicita un túnel SSH, mientras que el otro solo solicita una biblioteca SSH. 🙂
– Teekin
15 de febrero de 2011 a las 18:30