You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用plumberDeploy部署Plumber API至DigitalOcean遇SSH认证错误求助

使用plumberDeploy部署Plumber API至DigitalOcean的SSH认证错误

我尝试用plumberDeploy将Plumber API部署到DigitalOcean,始终遇到无法解决的错误。已重新生成SSH公私钥并在DigitalOcean后台完成配置,但问题仍未缓解。

执行以下代码时:

library(plumberDeploy)
library(analogsea)

mydrop <- plumberDeploy::do_provision(example = F)

得到错误输出:

THIS ACTION COSTS YOU MONEY!
Provisioning a new server for which you will get a bill from DigitalOcean.
Using default ssh keys: keyaccess
NB: This costs $0.00893 / hour until you droplet_delete() it
Waiting for create ................................
Error encountered : Error: libssh failure at 'connect': Timeout connecting to 137.184.90.246


Retrying attemps 1 in 3 seconds.

New server key: 74:45:6a:ad:0e:1c:9f:de:ec:25:25:2b:fa:80:c5:cb:77:5f:25:3a
Error encountered : Error: Authentication with ssh server failed


Retrying attemps 2 in 9 seconds.

Error encountered : Error: Authentication with ssh server failed


Retrying attemps 3 in 27 seconds.

Error encountered : Error: Authentication with ssh server failed

代码成功创建了Droplet,但后续组件安装未完成。即使针对已创建的Droplet执行测试部署代码:

plumberDeploy::do_deploy_api(483231642, "date", "docs/test/", 8000, docs = TRUE)

依然报错:

Error: Authentication with ssh server failed

我的session信息如下:

sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                         
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.13         ssh_0.9.3           later_1.3.0         R6_2.5.1           
 [5] sys_3.4.1           jsonlite_1.8.4      magrittr_2.0.3      credentials_2.0.2  
 [9] httr_1.4.7          rlang_1.1.0         cli_3.6.1           curl_5.0.0         
[13] rstudioapi_0.14     promises_1.2.0.1    tools_4.1.2         analogsea_1.0.7.2  
[17] httpuv_1.6.5        yaml_2.3.7          compiler_4.1.2      plumberDeploy_0.2.2
[21] askpass_1.1         openssl_2.0.6  

解决步骤

  1. 验证SSH密钥的可用性与权限

    • 运行credentials::ssh_key_info()查看R识别到的SSH密钥,确认keyaccess对应的密钥路径正确。
    • Windows系统下,确保私钥文件(默认C:\Users\<你的用户名>\.ssh\id_rsa)的权限为仅当前用户可读:右键文件→属性→安全→高级,禁用继承,仅添加当前用户并授予读取权限。
  2. 手动测试SSH连接

    • 打开PowerShell或Git Bash,执行ssh root@<你的Droplet IP>,检查能否正常连接。如果出现主机密钥验证错误,执行ssh-keygen -R <你的Droplet IP>清除旧密钥后重试。
    • 若手动连接失败,检查DigitalOcean后台是否将公钥正确添加到Droplet的SSH密钥列表,且创建Droplet时已选中该密钥。
  3. 显式指定密钥路径执行部署

    • 在do_provision中直接指定密钥路径,避免依赖默认配置:
      mydrop <- plumberDeploy::do_provision(
        example = FALSE,
        ssh_keys = list("你的密钥名称" = "C:/Users/你的用户名/.ssh/id_rsa")
      )
      
  4. 排查网络与防火墙限制

    • 确认本地Windows防火墙未阻止SSH出站连接(端口22),关闭VPN、代理等可能干扰网络的工具后重试。
    • 检查DigitalOcean Droplet的防火墙规则,确保入站SSH流量(端口22)已被允许。
  5. 更新相关R包

    • 你的ssh包版本较旧,更新到最新版本:
      install.packages("ssh")
      
      同时更新plumberDeploy和analogsea:
      install.packages(c("plumberDeploy", "analogsea"))
      

内容的提问来源于stack exchange,提问作者Duck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:08:16