我正试图将文件从另一台计算机拉到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错误,但它仍然不起作用。现在似乎控制台正在等待命令无限期地执行
答案 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启动。