所以,我创建了一个小的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)
事先谢谢。
答案 0 :(得分:0)
我认为您不能将密码传递给run.remote
,帮助文本说明(关于远程参数):
ssh的远程机器规范,格式为user @ server 不需要交互式密码输入。对于当地 执行,传递一个空字符串“”(默认)。
所以解决方案是passwordless ssh login。
我认为使用Rstudio时弹出框是OS / Desktop用来询问SSH密码的对话框。