使用R中的ssh隧道连接到数据库PostSQL

时间:2017-11-10 19:08:19

标签: r postgresql ssl ssh ssh-tunnel

目标是使用SSH隧道将 R 连接到 PostgreSQL

尝试使用库<panel> <div>panel { label }</div> <script> this.label = opts.label </script> </panel> RPostgreSQL时失败了。我找不到传递SSH隧道参数(代理主机,代理用户和私钥)的方法。

我想知道是否有办法在db查询字符串中以某种方式指定这些SSH参数?也许另一种出路?

1 个答案:

答案 0 :(得分:2)

这是我使用的代码示例:

首先,设置一个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)。