web-dev-qa-db-fra.com

Comment activer le support SFTP dans cURL?

J'ai installé curl-7.27.0 et ça marche très bien, même si ça ne marche pas, on l'exécute en-dessous de la commande pour savoir s'il est maintenant, mais cela montrait que:


Résultat de la commande curl -V


root @ ubuntu: ~/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


Protocoles: fichier dict ftp ftps Gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp


Caractéristiques: NSS SSL Liberty NTN IPv6 Largefile Négocier avec le GSS

14
Hrish

Vous devez d'abord compiler curl avec le support sftp.

Téléchargez et décompressez la source curl. Après ça:

 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 règles 

trouver et remplacer "--without-libssh2" par "--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 

Mettez à jour les commandes avec les versions adéquates, bien sûr. Plus d'infos ici .

15
Frantique

Si vous ne trouvez pas --without-libssh2 à remplacer par --with-libssh2, vous pouvez rechercher --without-ssl et append --with-libssh2, testé avec curl Version . ) 7.35.0 sur Ubuntu 14.04.2

Réponse personnalisée de Frantique:

Téléchargez et décompressez la source curl. Après ça:

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

Trouvez --without-ssl et ajoutez --with-libssh2, dans mon cas, cela ressemble à ceci:

Avant

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

Après

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

Maintenant, construisez les paquets:

cd ..
Sudo dpkg-buildpackage
cd ..

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

Voici un autre bon tutoriel pour votre problème.

Plus d'infos sur la réponse de Frantique.

6
JumpLink

La réponse de Frantique a bien fonctionné pour moi. Cependant, lorsque j'ai essayé de mettre à niveau mon système, mon gestionnaire de paquets a voulu rétablir l'installation de Curl qui ne dispose pas de sftp/scp.

Pour éviter de réinstaller curl avec sftp/scp après chaque mise à niveau:

Sudo aptitude hold libcurl3
Sudo aptitude hold libcurl3-gnutls

Utilisez apt-mark si vous utilisez apt.

Lisez cette page si vous voulez plus d’informations sur la prévention des mises à jour d’un paquet spécifique.

Notez que, par la suite, une mise à niveau future risque de ne pas pouvoir avancer tant que vous n'avez pas supprimé la suspension.

Si par hasard vous utilisez PHP et avez besoin de sftp in curl - vous devriez vérifier phpseclib qui pourrait être beaucoup plus facile à installer et à maintenir.

5
user12345

Voici comment construire curl avec le support libssl pour Ubuntu 18.04. C'EST:

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

cd curl-*

Téléchargez le correctif et corrigez le 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
  • Ou en alternative remplacer dans le fichier le debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    avec

    CONFIGURE_ARGS += --with-libssh2
    

Ensuite, construisez et installez les paquets:

Sudo dpkg-buildpackage -uc -us
# -us Do not sign the source package.
# -uc Do not sign the .changes file.

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>

J'espère que ça aide quelqu'un.

0
wittich