Configurar o túnel SSH na conexão existente do script

1

Eu quero estabelecer um túnel SSH em uma conexão existente. A parte complicada é fazer isso a partir de um script (um shell personalizado eu preciso permitir aos usuários apenas algumas coisas específicas, como configurar este túnel).

Normalmente você pode fazer:

<enter>
~C
ssh> -L 8080:localhost:80

Mas eu preciso ser capaz de fazer isso a partir de um script python em execução. Eu tentei:

print("\n~C -L 8080:localhost:80")

mas infelizmente isso era um pensamento simples demais.

Então, como configuro o túnel a partir de um script Python em execução?

(como um problema secundário, eu também tenho que impedir ssh -N -L x:host:y host.example.com , mas ainda permitir que os portfositivos sejam configurados com meu shell personalizado).

    
por Halfgaar 23.02.2015 / 15:57

1 resposta

2

Tente usar sshtunnel lib.

Exemplo:

from sshtunnel import SSHTunnelForwarder
from time import sleep

with SSHTunnelForwarder(
    ('localhost', 2222),
    ssh_username="vagrant",
    ssh_password="vagrant",
    remote_bind_address=('127.0.0.1', 3306)) as server:

    print(server.local_bind_port)
    while True:
        # press Ctrl-C for stopping
        sleep(1)

print('FINISH!')

ou CLI:

python -m sshtunnel -U vagrant -P vagrant -L :3306 -R 127.0.0.1:3306 -p 2222 localhost
    
por 17.06.2015 / 22:55