如何在cURL中启用SFTP支持?


15

我已经安装了curl-7.27.0,并且工作正常。但是,当我运行时curl -V,我得到:

curl 7.21.6 (i686-pc-linux-gnu) libcurl/7.21.6 OpenSSL/1.0.0e zlib/1.2.3.4 libidn/1.22 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

如何启用SFTP协议?

Answers:


15

您必须先curl使用sftp支持进行编译。

下载并解压缩卷曲源。之后:

sudo apt-get install build-essential debhelper libssh2-1-dev
sudo apt-get source libcurl3
须藤apt-get build-dep libcurl3

cd curl-x.xx.x / debian

纳米规则

查找并将“ --without-libssh2”替换为“ --with-libssh2”

光盘..

须藤dpkg-buildpackage

光盘..

须藤dpkg -i curl_xxxxx.deb
须藤dpkg -i libcurl3_xxxx.deb
须藤dpkg -i libcurl3-gnutls_xxxx.deb

当然,请使用适当的版本更新命令。更多信息在这里


当我用Google搜索它时,我已经经历过了,但是在那方面我遇到了一个小问题。您在此链接中提到的内容。<br/> ** 1)即使解压缩curl源后,怎么也找不到curl-x.xx.x / debian目录或文件?<br/> 2)我可能没有一个正确的想法吗?源我下载怎么过是这个卷曲来源
Hrish

不过,我还是要感谢您至少尝试解决此问题,并请您检查我在这里提到的2个问题。有gr8时间。
2012年


6

如果找不到--without-libssh2--with-libssh2可以搜索--without-ssl追加 --with-libssh2,并在Ubuntu 14.04.2上使用curl版本7.35.0测试

来自Frantique的定制答案:

下载并解压缩卷曲源。之后:

sudo apt-get install build-essential debhelper libssh2-1-dev
sudo apt-get source libcurl3
sudo apt-get build-dep libcurl3

cd curl-*/debian

nano rules

查找 --without-ssl并追加--with-libssh2,在我的情况下,它看起来像这样:

之前

cd debian/build && dh_auto_configure ${CONFIGURE_ARGS}          \
        --with-ca-path=/etc/ssl/certs
cd debian/build-gnutls &&  dh_auto_configure ${CONFIGURE_ARGS}  \
        --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt     \
        --without-ssl --with-gnutls
cd debian/build-nss && dh_auto_configure ${CONFIGURE_ARGS}      \
        --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt     \
        --without-ssl --with-nss

cd debian/build && dh_auto_configure ${CONFIGURE_ARGS}          \
        --with-ca-path=/etc/ssl/certs --with-libssh2
cd debian/build-gnutls &&  dh_auto_configure ${CONFIGURE_ARGS}  \
        --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt     \
        --without-ssl --with-gnutls --with-libssh2
cd debian/build-nss && dh_auto_configure ${CONFIGURE_ARGS}      \
        --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt     \
        --without-ssl --with-nss --with-libssh2

现在构建软件包:

cd ..
sudo dpkg-buildpackage
cd ..

sudo dpkg -i curl_*.deb
sudo dpkg -i libcurl3_*.deb
sudo dpkg -i libcurl3-gnutls_*.deb

这是解决您问题的另一个很好的教程

有关Frantique答案的更多信息。


5

Frantique的答案对我有用-但是,当我尝试升级系统时,我的软件包管理器想要将安装恢复为没有sftp / scp的curl。

为了避免每次升级后都必须使用sftp / scp重新安装curl:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

如果使用apt,请使用apt-mark。

如果需要有关阻止特定软件包更新的更多信息,请阅读此页面

请注意,最终一些将来的升级可能无法继续进行,除非您取消保留。

如果您偶然使用的是PHP,并且需要在curl中使用sftp,则应查看phpseclib,它可能更易于安装和维护。


应该也举行“ curl”活动,还是没有必要?
大卫·奥利佛

1

这是使用Ubuntu 18.04的libssl支持构建curl的方法。LTS:

sudo apt-get install build-essential debhelper libssh-dev
sudo apt-get source curl
sudo apt-get build-dep curl

cd curl-*

下载补丁并修补debian/rules

wget https://bugs.launchpad.net/ubuntu/+source/curl/+bug/311029/+attachment/5234644/+files/ubuntu_libssl.patch
sudo patch debian/rules < /ubuntu_libssl.patch
  • 可选择性文件中替换debian/rules

    CONFIGURE_ARGS += --without-libssh2` 
    

    CONFIGURE_ARGS += --with-libssh2
    

然后构建并安装软件包:

sudo dpkg-buildpackage -uc -us -b
# -us Do not sign the source package.
# -uc Do not sign the .changes file.
# -b Do not try to apply changes to the unpacked upstream

cd ..

sudo dpkg -i curl_*.deb
sudo dpkg -i libcurl3-*.deb
sudo dpkg -i libcurl3-gnutls_*.deb

sudo apt-mark hold curl
sudo apt-mark hold libcurl3
sudo apt-mark hold libcurl3-gnutls
# sudo apt-mark unhold <package-name>

希望能帮助到别人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.