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?

Hrish
la source

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 .

Frantique
la source
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.

JumpLink
la source
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.

user12345
la source
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.

wittich
la source