我在主机A 上有一个 Docker容器,它在端口 5022上导出 SSH 服务。
例如。如果我想连接到容器,我通常会library(shiny)
ui <- fluidPage(
selectInput("table_no", "", choices = 1:ncol(iris)),
tableOutput("tbl")
)
server <- function(input, output, session) {
output$tbl <- renderTable( {
index <- as.numeric(input$table_no)
colname <- colnames(iris)[index]
out <- data.frame(iris[, index])
colnames(out) <- colname
out
})
}
shinyApp(ui, server)
。
在Docker容器中,我有一个ADB服务器(Android Debug Bridge),它在端口5037上运行(这是默认端口)。例如,我可以在容器中运行ssh -p 5022 user@hostA
以列出所有已连接的Android设备和模拟器。
我想这样做,但远程来自主持人B 。因此,从主机B,我希望将adb devices
重定向到远程docker容器中的ADB。
我试图设置这样的隧道:
adb devices
然后ssh -L 9999:127.0.0.1:5037 -N -T -p 5022 user@hostA
但它不起作用:(并且隧道说adb -H 127.0.0.1 -P 9999 devices
和error: protocol fault (no status)
。
隧道:
channel 2: open failed: connect failed: Connection refused
ADB:
bash
$ ssh -L 9999:127.0.0.1:5037 -N -T -p 5022 user@hostA
user@hostA's password:
channel 2: open failed: connect failed: Connection refused
修改1:
我也尝试过(失败):bash
$ adb -H 127.0.0.1 -P 9999 devices
error: protocol fault (no status)
其中172.17.0.11是ssh -N -T -L 9999:172.17.0.11:5037 -p 5022 user@host
上docker容器的本地IP地址。然后host
仍然不满意adb -H 127.0.0.1 -P 9999 devices
。
error: protocol fault (no status)
的输出是:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
cef3d4daf9bc cryptax/android-re "/usr/bin/supervisord" 23 hours ago Up 23 hours 0.0.0.0:5037->5037/tcp, 0.0.0.0:5554->5554/tcp, 0.0.0.0:5900->5900/tcp, 5555/tcp, 0.0.0.0:5022->22/tcp androidre
的输出包含:
docker inspect androidre