Mac系统下R调用sftp包报错libcurl不支持sftp协议如何解决
该报错的核心原因是Mac设备上当前安装的libcurl库未启用SFTP协议支持,stenevang/sftp包底层依赖curl库的协议支持能力,按以下步骤操作即可解决:
方案一:重新安装带SFTP支持的curl环境
- 第一步:安装Homebrew版本的curl(默认已启用SFTP支持)
打开终端执行命令:brew install curl
安装完成后执行curl -V,若输出内容中包含sftp关键字即为安装成功。 - 第二步:配置系统优先使用Homebrew安装的curl
若使用zsh(MacOS 10.15+默认shell),终端依次执行:echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.zshrcsource ~/.zshrc
若使用bash,终端依次执行:echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.bash_profilesource ~/.bash_profile
注意:M系列芯片的Mac需要将路径中的/usr/local替换为/opt/homebrew - 第三步:源码重装R的curl包,关联新版libcurl
打开R控制台执行:install.packages("curl", type = "source") - 第四步:验证修复效果
重新执行原有的SFTP连接、下载代码即可正常运行。
方案二:改用不依赖libcurl的SFTP实现(无需调整系统环境)
可直接使用R的ssh包完成SFTP操作,示例代码如下:
library(ssh) # 建立SFTP连接 sftp_con <- ssh_connect(host = "username@sftp.name.com:2222", password = "password") # 下载当前目录所有文件 scp_download(sftp_con, files = "*") # 关闭连接 ssh_disconnect(sftp_con)
内容的提问来源于stack exchange,提问作者wizkids121
相关产品推荐
相关产品推荐

