闪亮服务器上的闪亮应用程序不要求ssh密码

时间:2017-03-09 15:27:51

标签: ssh shiny shiny-server

所以,我创建了一个小的Shiny应用程序,我把它托管在服务器上,比如服务器A.这个应用程序将尝试连接到另一台服务器,比如服务器B通过ssh。为了做这个连接,我使用了CRAN包ssh.utils中的run.remote。

当我尝试直接在服务器A上从RStudio(使用"运行应用程序"按钮)运行我的Shiny应用程序时,会弹出一个小窗口,要求输入访问服务器B的密码。

但是,当我在服务器A上使用闪亮服务器并运行应用程序时,我看到没有弹出窗口要求输入密码。然而,在闪亮的服务器日志中,我发现了以下消息:

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

这意味着我的应用已经尝试了三次访问权限,我不知道。

我的问题是,我应该怎么处理闪亮的服务器,所以它也会弹出窗口来询问密码,就像我使用Rstudio一样?另一个是,我不想使用ssh私钥/公钥。

以下是我住在服务器A中的简单代码:

library(shiny)
library(shinyFiles)
library(ssh.utils)


ui <- fluidPage(
  navbarPage(title = "Main window",
             tabPanel(title = "Test SSH",
                      textInput(inputId="username", label = h3("Username:")),

                      actionButton("submit", "Submit")
             )
  )
)


server <- function(input, output, session) {

  observeEvent(input$submit, {
    ## submit function here ##

    res <- run.remote("randomScript",remote = paste0(input$username,"@server-b.de"))               
  })
}


shinyApp(ui = ui, server = server)

事先谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您不能将密码传递给run.remote,帮助文本说明(关于远程参数):

  

ssh的远程机器规范,格式为user @ server   不需要交互式密码输入。对于当地   执行,传递一个空字符串“”(默认)。

所以解决方案是passwordless ssh login

我认为使用Rstudio时弹出框是OS / Desktop用来询问SSH密码的对话框。