在 OSX 上对 curl 的 SFTP 支持

Posted

技术标签:

【中文标题】在 OSX 上对 curl 的 SFTP 支持【英文标题】:SFTP Support for curl on OSX 【发布时间】:2012-10-21 17:08:33 【问题描述】:

我正在尝试在 OSX 中获得对 curl 的 SFTP 支持。我通过

安装了 curl
$ brew install curl --with-ssh

我还将自制版本通过符号链接到 /usr/bin

$ sudo ln -s /usr/local/bin/curl /usr/bin/curl

但我仍然得到一个

curl: (1) Protocol sftp not supported or disabled in libcurl

使用时

$ curl sftp://some.host.com/path/to/file

我的努力与真棒 git-ftp https://github.com/resmo/git-ftp/issues/146 的问题有关

我做错了什么?

【问题讨论】:

简短说明:现在看来您需要: brew install curl --with-libssh2 @DerWOK 你是这里真正的 MVP,这比答案更好。 截至 2018 年 8 月 brew install curl --with-ssh 自动将其翻译为 --with-libssh2。 【参考方案1】:

运行“curl -V”并查看 SFTP 是否被列为支持的协议。

如果不是,则需要使用 libssh2 重新构建 curl 以获得内置支持。

【讨论】:

您好,谢谢。虽然我用 ssh 安装了 curl,但确实没有列出 sftp。原来自制软件安装 curl 到 /usr/local/Cellar/curl/7.28.0/bin/curl 所以重做符号链接为我做了:ln -s /usr/local/Cellar/curl/7.28.0/bin/curl /usr/bin/curl 因为同样的错误而来到这里,也使用了 git-ftp。小世界... 仅供参考,Homebrew 在构建 curl 后说:这个公式仅适用于小桶,因此它没有符号链接到 /usr/local。 Mac OS X 已经提供了这个软件,如果并行安装另一个版本会带来各种各样的麻烦。【参考方案2】:

如果您使用的是 Mac,则必须先运行它才能启用:

brew install curl --with-libssh2

【讨论】:

如果您因为 brew 团队不再支持此标志而陷入困境,请考虑使用其他库。例如,php 有 packagist.org/packages/phpseclib/phpseclib 可用,它不需要通过 cURL 来使用 sftp 协议。 这个答案不再有效。 Error: invalid option: --with-libssh2【参考方案3】:

因为--with-libssh2 选项是removed from brew,所以要这样做:

brew install curl-openssl

注意:

curl is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have curl first in your PATH, run:
  echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.zshrc

或者直接调用:

/usr/local/opt/curl/bin/curl ...

【讨论】:

以上是关于在 OSX 上对 curl 的 SFTP 支持的主要内容,如果未能解决你的问题,请参考以下文章

使用CURL上传文件

curl命令

(转)Curl命令详解

curl啥意思

shell中的curl网络请求

curl是啥意思