问题描述
我正在通过EC2 Jumphost通过SSH连接将python脚本连接到我的RDS中,该EC2出现多个问题。这似乎是最接近的工作方式,但我仍然不知道下一步该怎么做。
提供的错误是'OperationalError:无法连接到服务器: 操作超时服务器在主机xxx(xxx)和 在端口xxxx上接受TCP / IP连接?
from sshtunnel import SSHTunnelForwarder
import psycopg2
with SSHTunnelForwarder(
('xxxx.us-east-2.compute.amazonaws.com'),ssh_username="username",ssh_pkey="jump_host.pem",remote_bind_address=('xxx.us-east-2.rds.amazonaws.com',15432) ) as tunnel:
print("****SSH Tunnel Established****")
db = psycopg2.connect(dbname='postgres',user='user',password='password',host='xxx.us-east-2.rds.amazonaws.com',port=tunnel.local_bind_port)
# Run sample query in the database to validate connection
try:
# Print all the databases
with db.cursor() as cur:
cur.execute('SHOW DATABASES')
for r in cur:
print(r)
finally:
db.close()
我可以使用的是key.pem,EC2 IP地址/端口,jumphost的用户名,数据库;主机,端口,dbname,用户名,密码。 IP地址已列入白名单,我可以使用上述所有方法通过DBeaver访问信息。
我尝试将paramiko与存储为的键一起使用:
mypkey = paramiko.RSAKey.from_private_key_file('jump_host.pem')
以及sshtunnel提供的示例,该示例具有以下错误:
BaseSSHTunnelForwarderError:无法建立与SSH的会话 网关
with SSHTunnelForwarder(
('3.129.XXX.XXX',443),ssh_pkey=mypkey,ssh_private_key_password="",remote_bind_address=('3.129.XXX.XXX',22),local_bind_address=('0.0.0.0',10022)
) as tunnel:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('127.0.0.1',10022)
# do some operations with client session
client.close()
print('FINISH!')
我应该如何最好地设置一个Python脚本以SSH进入EC2,连接到私有RDS,然后运行所需的所有代码?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)