Zek*_*eks 7 linux ssh r rstudio
我试图将文件从另一台计算机拉到Centos 6上的RStudio的R环境中
我先在普通R中尝试过,当我发行时
readLines(pipe( 'ssh root@X.X.X.X "cat /path/somefile.sh"' ))
Run Code Online (Sandbox Code Playgroud)
它正确地要求我输入我的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).
Run Code Online (Sandbox Code Playgroud)
我怀疑原因是因为rstudio on centos实际上使用了rstudio-server用户(并且gui是在浏览器中提供的).有谁知道如何从中正确访问ssh'd资源?
UPD:执行后
Sys.setenv(PATH = paste0(Sys.getenv('PATH'), ':/usr/lib/rstudio-server/bin/postback'))
Run Code Online (Sandbox Code Playgroud)
如下所示,它不会输出askpass错误,但它仍然无法正常工作.现在看来控制台正在等待命令无限期地执行
rpostback-askpass是 RStudio 的一部分。/usr/lib/rstudio-server/bin/postback添加它的位置(在我的系统上)可能会有所帮助,PATH以便 ssh 可以找到它:
Sys.setenv(PATH = paste0(Sys.getenv('PATH'), ':/usr/lib/rstudio-server/bin/postback'))
Run Code Online (Sandbox Code Playgroud)
UPDATE RCurl具有scp通过 ssh 连接复制文件的功能。有关详细信息,请参阅此答案。如果您使用 RStudio 运行脚本,则可以使用其 API 通过隐藏输入以交互方式输入 ssh 密码:
pass <- .rs.askForPassword("password?")
Run Code Online (Sandbox Code Playgroud)
rstudioapi可以帮助确定脚本是否由 RStudio 启动。
| 归档时间: |
|
| 查看次数: |
4911 次 |
| 最近记录: |