Robot Framework通过SSH隧道连接PostgreSQL数据库超时问题求解
问题根因
你出现连接超时是两个配置错误共同导致的:
Create Local SSH Tunnel关键字参数使用错误:该关键字的参数规则为本地监听端口 远端目标服务IP 远端目标服务端口,你当前最后一个参数填的22是SSH服务端口,实际需要替换为PostgreSQL的服务端口5432- 数据库连接配置错误:本地SSH隧道建立后,是通过本地端口转发实现访问远端内网服务,因此连接数据库时不能直接填写远端数据库IP,需要将数据库地址改为
127.0.0.1,端口改为你设置的本地隧道监听端口9191
修复后完整测试代码
*** Settings *** Library DatabaseLibrary Library SSHLibrary *** Variables *** ${IP_DATABASE} 10.xxx.xxx.xx ${PORT_DB} 5432 ${DB_NAME} MyNameDB ${SCHEMA_DATABASE} MySchemaDB ${USER_DB} MyUserDB ${PASSWORD_DB} MyPasswordDB # 新增本地隧道端口变量 ${LOCAL_TUNNEL_PORT} 9191 *** Test Cases *** Connect To DB Via SSH SSHLibrary.Open Connection 10.xxx.xxx.xx SSHLibrary.Login MySSH_User MySSH_Password delay=1 # 修改最后一个参数为数据库端口5432 SSHLibrary.Create Local SSH Tunnel ${LOCAL_TUNNEL_PORT} ${IP_DATABASE} ${PORT_DB} Sleep 2s # 修改数据库地址为127.0.0.1,端口为本地隧道端口 DatabaseLibrary.Connect To Database psycopg2 ${DB_NAME} ${USER_DB} ${PASSWORD_DB} 127.0.0.1 ${LOCAL_TUNNEL_PORT}
补充说明
如果你的SSH跳转服务器和PostgreSQL数据库不是部署在同一台机器上,只需要将Create Local SSH Tunnel的第二个参数改为数据库在SSH跳转服务器内网可访问的IP地址即可,其余配置无需调整。
内容的提问来源于stack exchange,提问作者AutomationNeeded
相关产品推荐
相关产品推荐

