Создайте туннель SSH к другому компьютеру через R для доступа к таблице postgreSQL

Как часть моего рабочего процесса R для одного из моих проектов, я загружаю данные из таблицы postgreSQL, расположенной на удаленном сервере.

Мой код выглядит так (анонимные учетные данные).

Сначала я открываю соединение SSH с удаленным серверомв терминале.

ssh -p Port -L LocalPort:IP:RemotePort servername"

Затем я подключаюсь к базе данных postgres в R.

# Load the RPostgreSQL package
library("RPostgreSQL")

# Create a connection
Driver <- dbDriver("PostgreSQL") # Establish database driver
Connection <- dbConnect(Driver, dbname = "DBName", host = "localhost", port = LocalPort, user = "User")

# Download the data
Data<-dbGetQuery(Connection,"SELECT * FROM remote_postgres_table")

Этот подход работает отлично, и я могу загрузить данные без проблем.

Однако я бы хотел сделать первый шаг - создать соединение ssh - в R, а не в терминале. Вот моя попытка сделать это с сопутствующей ошибкой.

# Open the ssh connection in R
system("ssh -T -p Port -L LocalPort:IP:RemotePort servername")

# Load the RPostgreSQL package
library("RPostgreSQL")

# Create a connection
Driver <- dbDriver("PostgreSQL") # Establish database driver
Connection <- dbConnect(Driver, dbname = "DBName", host = "localhost", port = LocalPort, user = "User")

# Download the data
Data<-dbGetQuery(Connection,"SELECT * FROM remote_postgres_table")

Error in postgresqlExecStatement(conn, statement, ...) : 
RS-DBI driver: (could not Retrieve the result : server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.

Чтобы прояснить мой вопрос, я хотел бы выполнить весь этот рабочий процесс (установить соединение, загрузить данные postgreSQL) полностью в R без каких-либо шагов в терминале.

Ответы на вопрос(2)

Ваш ответ на вопрос