在 R 中使用 ssh 隧道连接到数据库 PostSQL
Connect to database PostSQL using ssh tunnel in R
Objective 是使用 SSH 隧道将 R 连接到 PostgreSQL。
刚刚尝试使用库 RPostgreSQL
和 DBI
,但没有成功。我找不到传递 SSH 隧道参数(代理主机、代理用户和私钥)的方法。
我想知道是否有办法以某种方式在数据库查询字符串中指定这些 SSH 参数?或许还有别的出路?
这是我使用过的代码示例:
首先,设置一个 ssh 隧道 - 这将用于 AWS EC2 实例:
ssh -i 'YOURKEY.pem' -N -L 1234:YOURDATABASEHOST:5432 YOURUSER@YOURAWSINSTANCE
然后在 R 中:
library(RPostgreSQL)
conn <- dbConnect(RPostgreSQL::PostgreSQL(), dbname = 'MYREMOTEDBNAME', host = '127.0.0.1', port = 1234, password = 'MYREMOTEPASSWORD', user = 'MYREMOTEUSER')
如您所见,关键是在某种远程实例和远程数据库之间设置隧道。然后您使用这个本地托管的隧道(因此,127.0.0.1 作为您的主机)和指定的端口(在本例中为 1234)。
Objective 是使用 SSH 隧道将 R 连接到 PostgreSQL。
刚刚尝试使用库 RPostgreSQL
和 DBI
,但没有成功。我找不到传递 SSH 隧道参数(代理主机、代理用户和私钥)的方法。
我想知道是否有办法以某种方式在数据库查询字符串中指定这些 SSH 参数?或许还有别的出路?
这是我使用过的代码示例:
首先,设置一个 ssh 隧道 - 这将用于 AWS EC2 实例:
ssh -i 'YOURKEY.pem' -N -L 1234:YOURDATABASEHOST:5432 YOURUSER@YOURAWSINSTANCE
然后在 R 中:
library(RPostgreSQL)
conn <- dbConnect(RPostgreSQL::PostgreSQL(), dbname = 'MYREMOTEDBNAME', host = '127.0.0.1', port = 1234, password = 'MYREMOTEPASSWORD', user = 'MYREMOTEUSER')
如您所见,关键是在某种远程实例和远程数据库之间设置隧道。然后您使用这个本地托管的隧道(因此,127.0.0.1 作为您的主机)和指定的端口(在本例中为 1234)。