我正在尝试使用 dplyr 连接到位于外部服务器中的数据库
src_postgres(dbname = NULL, host = NULL, port = NULL, user = NULL,
password = NULL, ...)
到目前为止一切顺利,我已经获得了连接到数据库所需的所有参数。问题是数据库所在的服务器也需要身份验证(用户名和密码)。
我尝试使用 ?pipe
创建连接,但似乎它只在尝试从远程服务器提取文件 时有效。
有什么线索吗?
最佳答案
好消息!我一直这样做,并不难 :)
两步:
1。创建SSH key 并放在远程服务器上
来自 https://serverfault.com/posts/241593/edit
在本地机器上生成 ssh key :
$ ssh-keygen -t rsa -b 2048
然后按 Enter 输入空密码以得到:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
将您的 key 复制到目标服务器
ssh-copy-id id@server
检查这是否适用于 ssh 'id@server'
,并检查文件夹 .ssh/authorized_keys
中的 ssh key 。
您应该知道可以使用 $ ssh id@server
登录
2。将您的数据库端口转发到本地计算机
你应该知道能够使用
ssh -fN id@server
启动 SSH 连接并将端口转发到本地主机。
您可能需要将 -p
参数调整为 ssh
以选择正确的端口。
一旦您可以成功转发端口,您应该能够从您的本地 机器使用src_postres()
来访问远程数据库。
你也可以用
开始你的R脚本system("ssh -fN id@server")
或者把命令放在你的.Rprofile
3。 (可选)
此外,也许您不想在脚本中使用您的 id
和 server
地址,例如,如果您打算将它们提供给客户,或者将它们放在在 github 上。
然后,使用以下内容编辑或创建文件(在本地计算机上).ssh/config
:
Host my_ssh
User id
Hostname server
然后你就可以使用 ssh -fN my_ssh
关于r - 使用 dplyr 连接到外部服务器/数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806734/