RCurl - 如何从sftp检索数据?

时间:2018-03-28 12:29:17

标签: r

我尝试使用以下代码从sftp检索数据:

library(RCurl)

protocol <- "sftp"
server <- "xxxx@sftp.xxxx.com"
userpwd <- "xxx:yyy"
tsfrFilename <- "cccccc.tsv" 
ouptFilename <- "out.csv"



opts = list(
  #ssh.public.keyfile = "true", # file name
  ssh.private.keyfile = "xxxxx.ppk",
  keypasswd = "userpwd"
)

# Run #
## Download Data
url <- paste0(protocol, "://", server, tsfrFilename)
data <- getURL(url = url, .opts = opts, userpwd=userpwd)

我收到了一条错误消息: 函数错误(type,msg,asError = TRUE):身份验证失败

我做错了什么?

由于

2 个答案:

答案 0 :(得分:0)

使用私钥,您不需要使用用户名密码。所以你的getURL声明将是:

data <- getURL(url = url, .opts = opts, username="username")

答案 1 :(得分:0)

我遇到了完全相同的问题,刚刚花了一个小时尝试不同的东西。对我有用的是将私钥的格式更改为 OpenSSH。

为此,我使用了密钥生成器包 puttygen。转到菜单项“转换”以导入原始私钥并导出为 OpenSSH 格式。我使用新文件名将转换后的密钥导出到原始密钥所在的同一文件夹中。我保留了 *.ppk 扩展名

然后我使用了以下命令:

opts <- list(
       ssh.private.keyfile = "<path to my new OpenSSH Key>.ppk"
)

data <- getURL(url = URL,  .opts = opts, username = username, verbose = TRUE)

这似乎工作正常。