我需要在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上!
答案 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