我試圖連接到遠程連接到服務器,然後訪問它與蟒蛇本地數據庫。我成功地連接到服務器,但我似乎無法連接到服務器上的數據庫。我的代碼如下:通過SSH隧道連接到PostgreSQL數據庫的Python
import psycopg2
from sshtunnel import SSHTunnelForwarder
try:
with SSHTunnelForwarder(
('<server ip address>', 22),
ssh_private_key="</path/to/private/ssh/key>",
ssh_username="<server username>",
remote_bind_address=('localhost', 5432)) as server:
print "server connected"
conn = psycopg2.connect(database="<dbname>",port=server.local_bind_port)
curs = conn.cursor()
print "database connected
except:
print "Connection Failed"
這是我在互聯網上找到的一些代碼示例。我也曾嘗試下面的連接語句來代替那些連接上面的:
params = {
'database': '<dbname>',
'user': '<dbusername>',
'password': '<dbuserpass>',
'host': 'localhost',
'port': 5432
}
conn = psycopg2.connect(**params)
我知道我可以連接到數據庫,因爲我的機器上;我能夠使用sqlectron
隧道並連接正確。
爲防萬一還不清楚上面要做什麼,我需要在我的計算機上使用專用ssh密鑰(正常工作)將隧道連接到遠程服務器,然後我需要連接到PostgreSQL數據庫是在localhost
在端口5432
。
我目前獲取當前的錯誤消息的嘗試連接兩種方式:
2016-01-23 11:16:10,978 | ERROR | Tunnel: 0.0.0.0:49386 <> localhost:5432 error: (9, 'Bad file descriptor')
我試圖上面的代碼,但我看到以下錯誤'HandlerSSHTunnelForwarderError:在#1 < - ( '127.0.0.1',53281)至('10 .160.1.24' ,5432)失敗:ChannelException( 2,'連接失敗')'。任何想法我可能做錯了什麼? –