从R识别并关闭SSH隧道

时间:2016-02-24 11:51:33

标签: r ssh

我需要在R中连接到使用SSH隧道的数据库。基于谷歌搜索SO告诉我,我have to create an SSH tunnel first,然后连接到我的数据库,但在执行我的SQL后如何安全地关闭隧道几乎没有。

示例:

if(!require(RPostgreSQL)) install.packages("RPostgreSQL")

# Create tunnel
myssh<-"ssh -f <server_user>@<server_ip>  -L <unused_local_port>:localhost:<database_remote_port> -N"
system(myssh)

# Connect to DB
drv  <- dbDriver("PostgreSQL")
conn <- dbConnect(
  drv,
  host = "127.0.0.1", user = "postgres",
  password = "", dbname = "mydb",
)

# How to close tunnel?

如何正确检测和关闭由R创建的SSH隧道?

PS我在Windows上!

2 个答案:

答案 0 :(得分:4)

我在Auto-closing SSH tunnels找到了一篇很好的文章 - 它建议使用这样的代码进行连接:

ssh -f -L 3306:127.0.0.1:3306 me@remote.example.org sleep 10;

它使用的功能是ssh在使用时不会关闭连接。它将首先等待10秒 - 如果连接被使用,则在连接完成后关闭连接。

答案 1 :(得分:1)

在Mac和Linux上,您可以将其关闭为任何其他背景ssh连接:

ps -ef | grep ssh

然后

kill -9 pid

我不知道Windows上是否有ps