【问题标题】:Establishing ssh connection from within RStudio on linux从 Linux 上的 RStudio 中建立 ssh 连接
【发布时间】:2014-07-25 09:08:37
【问题描述】:

我正在尝试将文件从另一台计算机拉到 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).

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

UPD:执行后

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

按照下面的建议,它不会输出 askpass 错误,但它仍然不起作用。现在好像控制台在无限期地等待命令执行

【问题讨论】:

    标签: linux r ssh rstudio


    【解决方案1】:

    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 启动。

    【讨论】:

    • 取得了一些进展,但仍然无法正常工作。它不会输出有关 askpass 的错误(看起来现在可以看到),但它也不会给出密码提示,而且看起来系统只是在等待它,因为 r simpy 会无限期地挂起。 :(
    • 你可以使用 RCurl 包中的scp 函数吗?在这里查看我的答案:stackoverflow.com/questions/17347450/…。如果要交互输入密码,可以使用RStudio提供的.rs.askForPassword("password?")
    • 是的,这行得通,谢谢 :) 如果您将此作为答案,我将能够给您赏金 :)
    • 这仅适用于想要复制文件的情况。如果您想要任何其他命令的结果,您仍然会遇到同样的问题。仍然会对解决方案感兴趣,因为扩展路径对我也不起作用。附:代码在 shell 中可以在 R 中正常工作,只是在 RStudio 中不行。
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 2014-07-25
    • 2017-06-24
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2016-01-16
    相关资源
    最近更新 更多