python - libreria - Reenvío de puertos con paramiko
python ssh server (2)
Puede utilizar https://github.com/pahaz/sshtunnel
pip install sshtunnel
Ejemplo de código:
import sshtunnel
with sshtunnel.open(
(ssh_host, ssh_port),
ssh_host_key=None,
ssh_username=ssh_user,
ssh_password=ssh_password,
ssh_private_key=None,
remote_bind_address=(REMOTE_HOST, REMOTE_PORT)) as server:
def do_something(port):
# Do something with port
pass
print("LOCAL PORT:", server.local_bind_port)
do_something(server.local_bind_port)
Estoy tratando de hacer un reenvío de puertos desde una aplicación python usando paramiko. Puedo configurar la conexión SSH bien, pero estoy un poco perplejo en cuanto a cómo usar paramiko.transport. Ya encontré este archivo , pero no puedo averiguar qué está pasando en él. De mirar los docs paramiko.Transport, parece que una sola línea utiliza la función open_channel, pero no puedo averiguar cómo implementar eso. Estoy tratando de replicar un simple ssh -L 8000: localhost: 8000.
¿Puede alguien ayudarme?
Encuentre algún código usando paramiko-1.7.7.1
, pycrypto-2.6
y el script paramiko-1.7.7.1
código desde la línea 115 hasta el final (para evitar el análisis de opciones).
import paramiko, sys
from forward import forward_tunnel
remote_host = "target_host"
remote_port = 8000
local_port = 8000
ssh_host = "my_ssh_host"
ssh_port = 22
user = "login"
password = "s3cr3t"
transport = paramiko.Transport((ssh_host, ssh_port))
# Command for paramiko-1.7.7.1
transport.connect(hostkey = None,
username = user,
password = password,
pkey = None)
try:
forward_tunnel(local_port, remote_host, remote_port, transport)
except KeyboardInterrupt:
print ''Port forwarding stopped.''
sys.exit(0)
Lo he probado con éxito desde una estación de Windows, usando un servidor ssh bajo Red Hat y apuntando a un tercer servidor. (Estoy usando Python 2.7.2
)
Espero eso ayude,