2016-06-23 4 views
0

Я пытаюсь подключиться к моей удаленной Postgres БД следующим образом:HandlerSSHTunnelForwarderError с SSHTunnelForwarder

from sshtunnel import SSHTunnelForwarder #Run pip install sshtunnel 
from sqlalchemy.orm import sessionmaker #Run pip install sqlalchemy 

with SSHTunnelForwarder(
    ('10.160.1.24', 22), #Remote server IP and SSH port 
    ssh_username = "<usr>", 
    ssh_password = "<pwd>", 
    remote_bind_address=('10.160.1.24', 5432), 
    local_bind_address=('127.0.0.1', 3334) 
    ) as server: 

    server.start() #start ssh sever 
    print 'Server connected via SSH' 

    #connect to PostgreSQL 
    local_port = str(server.local_bind_port) 
    engine = create_engine('postgresql://<db_user>:<db_pwd>@127.0.0.1:' + local_port +'/<db_name>') 

    Session = sessionmaker(bind=engine) 
    session = Session() 

    print 'Database session created' 

    #test data retrieval 
    test = session.execute("SELECT * FROM <table_name>") 

Это выход, который я вижу:

File "/Library/Python/2.7/site-packages/sshtunnel.py", line 299, in handle 
raise HandlerSSHTunnelForwarderError(msg) 
HandlerSSHTunnelForwarderError: In #1 <-- ('127.0.0.1', 54265) to ('10.160.1.24', 5432) failed: ChannelException(2, 'Connect failed') 

Любой идея, что я делаю не так? Я могу подключиться к postgresdb, выполнив команду ssh -L 3334:localhost:5432 [email protected] в отдельном терминале, а затем подключившись к db на localhost: 3334.

ответ

0

Нашли ошибку?

remote_bind_address=('10.160.1.24', 5432) должно быть remote_bind_address=('127.0.0.1', 5432),