在Linux上的RStudio内建立ssh连接

时间:2014-06-04 15:56:15

标签: linux r ssh rstudio

我正试图将文件从另一台计算机拉到Centos 6上的RStudio的R环境中

我先在普通R中尝试过,当我发出

readLines(pipe( 'ssh root@X.X.X.X "cat /path/somefile.sh"' ))

它正确地要求我输入我的ssh密码并读取内容。

但是如果从RStudio执行相同的命令,我得到的是:

ssh_askpass: exec(rpostback-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(rpostback-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(rpostback-askpass): No such file or dire
Permission denied (publickey,gssapi-with-mic,password).

我怀疑原因是因为rstudio实际上使用了rstudio-server用户(并且gui是在浏览器中提供的)。有谁知道如何从中正确访问ssh'd资源?

UPD:执行后

Sys.setenv(PATH = paste0(Sys.getenv('PATH'), ':/usr/lib/rstudio-server/bin/postback'))

如下所示它不会输出askpass错误,但它仍然不起作用。现在似乎控制台正在等待命令无限期地执行

1 个答案:

答案 0 :(得分:3)

rpostback-askpass是RStudio的一部分。将其位置(我的系统上为/usr/lib/rstudio-server/bin/postback)添加到PATH可能会有所帮助,以便ssh可以找到它:

Sys.setenv(PATH = paste0(Sys.getenv('PATH'), ':/usr/lib/rstudio-server/bin/postback'))

更新 RCurl具有scp功能,可通过ssh连接复制文件。有关详细信息,请参阅this answer。如果您使用RStudio运行脚本,则可以使用其API以隐藏输入交互式输入ssh密码:

pass <- .rs.askForPassword("password?")

rstudioapi可以帮助确定脚本是否由RStudio启动。