Comment activer le support SFTP dans cURL?


15

J'ai installé curl-7.27.0 et cela fonctionne bien. Cependant, quand je cours curl -V, je reçois:

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

Comment activer le protocole SFTP?

Réponses:


15

Vous devez d'abord compiler curlavec 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

rechercher 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 .


J'ai vécu cela lorsque je l'ai recherché sur Google, mais il y a toujours un petit problème auquel je suis confronté. ce que vous avez mentionné ici se trouve dans ce lien . <br/> ** 1) comment n'ai-je jamais pu trouver le répertoire ou le fichier curl-x.xx.x / debian même après avoir extrait la source curl? <br/> 2) Serait-il possible que je ne sache pas quelle est la bonne source? quelle que soit la source que je télécharge est dans cette Curl Source
— Hrish

Je voudrais néanmoins vous remercier d'avoir au moins essayé de résoudre le problème et vous demander de vérifier les 2 problèmes que j'ai mentionnés ici. passer un bon moment gr8.
— Hrish

Voici ce que j'ai rassemblé aujourd'hui sur la base de la réponse de Frantique
— Mat Schaffer

6

Si vous ne trouvez pas --without-libssh2à remplacer, --with-libssh2vous pouvez rechercher --without-sslet ajouter --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-sslet 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 packages:

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'informations sur la réponse de Frantique.


5

La réponse de Frantique a fonctionné pour moi - cependant, lorsque j'ai essayé de mettre à niveau mon système, mon gestionnaire de paquets a voulu rétablir l'installation sur une boucle qui n'a pas sftp / scp.

Pour éviter d'avoir à 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 souhaitez plus d'informations sur la prévention des mises à jour d'un package spécifique.

Notez que, éventuellement, une future mise à niveau ne pourra pas avancer tant que vous n'aurez pas supprimé le blocage.

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


Faut-il également tenir la boucle, ou n'est-ce pas nécessaire?
— David Oliver

1

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 patch et patchez 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 remplacez alternativement dans le fichier debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    avec

    CONFIGURE_ARGS += --with-libssh2
    

Ensuite, construisez et installez les packages:

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>

J'espère que cela aide quelqu'un.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.