Come abilitare il supporto SFTP in cURL?


15

Ho installato curl-7.27.0 e funziona bene. Tuttavia, quando corro curl -V, ottengo:

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

Come abilito il protocollo SFTP?

Risposte:


15

Devi prima compilare curlcon il supporto sftp.

Scarica e scompatta l'origine del ricciolo. Dopo di che:

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

regole nane

trova e sostituisci "--without-libssh2" con "--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

Aggiorna i comandi con le versioni adeguate, ovviamente. Maggiori informazioni qui .


L'ho passato quando ho cercato su Google, come mai ci sia un piccolo problema che sto affrontando in questo. quello che hai menzionato lassù è lì in questo link . <br/> ** 1) come mai non sono riuscito a trovare la directory o il file curl-x.xx.x / debian da nessuna parte anche dopo aver estratto la fonte curl? <br/> 2) Potrebbe essere possibile che io non abbia un'idea di quale sia la fonte giusta? quanto mai la fonte che scarico sia in questa Curl Source
Hrish,

Vorrei comunque ringraziarti per almeno aver provato a risolvere il problema e chiederti di controllare i 2 problemi che ho menzionato qui. divertiti gr8.
Hrish,

Ecco cosa ho messo insieme oggi sulla base della risposta di Frantique
Mat Schaffer,

6

Se non riesci a trovare un --without-libssh2sostituto con --with-libssh2puoi cercare --without-ssle aggiungere --with-libssh2 , testato con curl Versione 7.35.0 su Ubuntu 14.04.2

Risposta personalizzata di Frantique:

Scarica e scompatta l'origine del ricciolo. Dopo di che:

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

Trova --without-ssle aggiungi --with-libssh2, nel mio caso, è simile al seguente:

Prima

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

Dopo

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

Ora costruisci i pacchetti:

cd ..
sudo dpkg-buildpackage
cd ..

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

Ecco un altro buon tutorial per il tuo problema.

Maggiori informazioni sulla risposta di Frantique.


5

La risposta di Frantique ha funzionato per me - tuttavia quando ho provato ad aggiornare il mio sistema, il mio gestore di pacchetti voleva ripristinare l'installazione in un ricciolo che non ha sftp / scp.

Per evitare di dover reinstallare curl con sftp / scp dopo ogni aggiornamento:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Usa apt-mark se usi apt.

Leggi questa pagina se desideri maggiori informazioni sulla prevenzione degli aggiornamenti di un pacchetto specifico.

Si noti che alla fine alcuni aggiornamenti futuri potrebbero non essere in grado di andare avanti fino a quando non si rimuove la sospensione.

Se per caso stai usando PHP e hai bisogno di sftp in curl, dovresti dare un'occhiata a phpseclib che potrebbe essere molto più facile da installare e mantenere.


Dovrebbe essere tenuto anche il 'ricciolo', o non è necessario?
David Oliver,

1

Ecco come costruire il ricciolo con il supporto libssl per Ubuntu 18.04. È:

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

cd curl-*

Scarica la patch e patch il 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
  • In alternativa, sostituisci nel file debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    con

    CONFIGURE_ARGS += --with-libssh2
    

Quindi compilare e installare i pacchetti:

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>

Spero che aiuti qualcuno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.