Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:modulos:sshtunnel

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:python:modulos:sshtunnel [2021/09/10 08:39] – [Instalación] tempwininformatica:programacion:python:modulos:sshtunnel [2021/09/10 10:11] (actual) – [sshtunnel] tempwin
Línea 1: Línea 1:
 ====== sshtunnel ====== ====== sshtunnel ======
  
-Creación de túneles SSH a servidores remotos con Python+Creación de [[informatica:software:ssh#tunel_ssh|túneles SSH]] a servidores remotos con [[informatica:programacion:python|Python]].
  
   * [[https://github.com/pahaz/sshtunnel/|Repositorio oficial]] (GitHub)   * [[https://github.com/pahaz/sshtunnel/|Repositorio oficial]] (GitHub)
Línea 50: Línea 50:
 server.stop() server.stop()
 </code> </code>
 +
 +Otro escenario habitual es acceder a otro equipo que está conectado al servidor SSH, pero no tiene visibilidad desde el exterior:
 +
 +<code>
 +----------------------------------------------------------------------
 +
 +                            |
 +-------------+              |    +----------+               +---------
 +    CLIENTE  |              |    | SERVIDOR |               | SERVIDOR
 +     LOCAL   | <== SSH ========> |  REMOTO  | <== local ==> | PRIVADO
 +-------------+              |    +----------+               +---------
 +                            |
 +                         FIREWALL (solo abierto puerto 443)
 +
 +----------------------------------------------------------------------
 +</code>
 +
 +Para poder conectarnos al servidor privado, se debe de crear un túnel SSH a través del puerto 443 del servidor remoto:
 +
 +<code python>
 +import paramiko
 +import sshtunnel
 +
 +with sshtunnel.open_tunnel(
 +    (REMOTE_SERVER_IP, 443),
 +    ssh_username="usuario",
 +    ssh_password="secreto",
 +    remote_bind_address=(PRIVATE_SERVER_IP, 22),
 +    local_bind_address=('0.0.0.0', 10022)
 +) as tunnel:
 +    client = paramiko.SSHClient()
 +    client.load_system_host_keys()
 +    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 +    client.connect('127.0.0.1', 10022)
 +    # do some operations with client session
 +    client.close()
 +print('FINISH!')
 +</code>
 +
 +En el ejemplo anterior estamos estableciendo un túnel SSH entre un equipo local y un servidor remoto con SSH y a través de ese túnel creamos una conexión entre el equipo local y el servidor privado solo accesible desde el servidor remoto con SSH.
informatica/programacion/python/modulos/sshtunnel.1631255993.txt.gz · Última modificación: por tempwin