Port forwarding with Paramiko

前端 未结 2 452
执笔经年
执笔经年 2020-11-28 12:21

I\'m trying to do some port forwarding from a python app using Paramiko. I can set up the SSH connection just fine, but I\'m a bit stumped as to how to use paramiko.T

相关标签:
2条回答
  • 2020-11-28 12:28

    Please find some code using paramiko-1.7.7.1, pycrypto-2.6 and the forward.py script from which I did remove code from the line 115 to the end (to avoid options parsing).

    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)
    

    I've tested it successfully from a Windows station, using a ssh server under Red Hat and pointing to a 3rd server. (I'm using Python 2.7.2)

    Hope it helps,

    0 讨论(0)
  • 2020-11-28 12:38

    You can use https://github.com/pahaz/sshtunnel

    pip install sshtunnel
    

    Code example:

    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)
    
    0 讨论(0)
提交回复
热议问题