Wie aktiviere ich die SFTP-Unterstützung in cURL?


15

Ich habe curl-7.27.0 installiert und es funktioniert einwandfrei. Wenn ich jedoch renne curl -V, erhalte ich:

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

Wie aktiviere ich das SFTP-Protokoll?

Antworten:


15

Sie müssen zuerst curlmit SFTP-Unterstützung kompilieren .

Laden Sie die Curl-Quelle herunter und entpacken Sie sie. Danach:

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

cd curl-x.xx.x / debian

Nano-Regeln

finde und ersetze "--without-libssh2" durch "--with-libssh2"

cd ..

sudo dpkg-buildpackage

cd ..

sudo dpkg -i curl_xxxxx.deb
sudo dpkg -i libcurl3_xxxx.deb
sudo dpkg -i libcurl3-gnutls_xxxx.deb

Aktualisieren Sie die Befehle natürlich mit den entsprechenden Versionen. Mehr Infos hier .


Ich habe das durchgemacht, als ich es gegoogelt habe, wie auch immer, es gibt ein kleines Problem, mit dem ich konfrontiert bin. Was Sie dort oben angegeben haben, finden Sie in diesem Link . <br/> ** 1) Wie auch immer konnte ich das Verzeichnis oder die Datei curl-x.xx.x / debian auch nach dem Extrahieren der Quelle curl nirgendwo finden? <br/> 2) Kann es sein, dass ich keine Ahnung habe, welche Quelle die richtige ist? Wie auch immer die Quelle, die ich heruntergeladen habe, ist in dieser Curl-Quelle
Hrish

Trotzdem möchte ich mich bei Ihnen bedanken, dass Sie zumindest versucht haben, das Problem zu lösen, und Sie bitten, die beiden hier erwähnten Probleme zu überprüfen. Habe eine gute Zeit.
Hrish

Hier ist, was ich heute zusammengestellt habe, basierend auf Frantiques Antwort - gist.github.com/matschaffer/966b95d160d02d377700
Mat Schaffer

6

Wenn Sie keinen --without-libssh2Ersatz finden , --with-libssh2können Sie suchen --without-sslund anhängen --with-libssh2 . Getestet mit curl Version 7.35.0 auf Ubuntu 14.04.2

Individuelle Antwort von Frantique:

Laden Sie die Curl-Quelle herunter und entpacken Sie sie. Danach:

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

Suchen --without-sslund anhängen --with-libssh2, in meinem Fall sieht es so aus:

Vor

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

Nach

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

Erstellen Sie nun die Pakete:

cd ..
sudo dpkg-buildpackage
cd ..

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

Hier ist ein weiteres gutes Tutorial für Ihr Problem.

Weitere Informationen zu Frantiques Antwort.


5

Die Antwort von Frantique hat sich für mich bewährt. Als ich jedoch versuchte, mein System zu aktualisieren, wollte mein Paketmanager die Installation auf einen Wert ohne sftp / scp zurücksetzen.

So vermeiden Sie, dass Sie curl nach jedem Upgrade mit sftp / scp neu installieren müssen:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Verwenden Sie apt-mark, wenn Sie apt verwenden.

Lesen Sie diese Seite, wenn Sie weitere Informationen zum Verhindern von Aktualisierungen eines bestimmten Pakets benötigen.

Beachten Sie, dass einige zukünftige Upgrades möglicherweise erst fortgesetzt werden können, wenn Sie die Sperrung aufheben.

Wenn Sie zufällig PHP verwenden und sftp in curl benötigen, sollten Sie phpseclib ausprobieren, das möglicherweise viel einfacher zu installieren und zu warten ist.


Soll auch 'curl' gehalten werden, oder ist das nicht nötig?
David Oliver

1

Hier erfahren Sie, wie Sie Curl mit libssl-Unterstützung für Ubuntu 18.04 erstellen. LTS:

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

cd curl-*

Laden Sie den Patch herunter und patchen Sie den 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
  • Oder ersetze alternativ in der Datei das debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    mit

    CONFIGURE_ARGS += --with-libssh2
    

Dann erstelle und installiere die Pakete:

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>

Hoffe das hilft jemandem.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.