¿Cómo habilitar el soporte SFTP en cURL?

15

He instalado curl-7.27.0 y funciona bien. Sin embargo, cuando corro curl -V, obtengo:

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

¿Cómo habilito el protocolo SFTP?

Hrish
fuente

Respuestas:

15

curlPrimero debe compilar con soporte sftp.

Descargue y descomprima la fuente curl. Después de esto:

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 reglas

busque y reemplace "--without-libssh2" con "--with-libssh2"

discos compactos ..

sudo dpkg-buildpackage

discos compactos ..

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

Actualice los comandos con las versiones adecuadas, por supuesto. Más información aquí .

Frantique
fuente
He pasado por eso cuando lo busqué en Google, sin embargo, hay un pequeño problema al que me enfrento en eso. lo que has mensurado allí arriba está allí en este enlace . <br/> ** 1) ¿cómo es que no pude encontrar el directorio o archivo curl-x.xx.x / debian en ninguna parte, incluso después de extraer la fuente curl? <br/> 2) ¿Es posible que no tenga una idea de cuál es la fuente correcta? como siempre que la fuente que descargo está en este Curl Source
Hrish
Aún así, me gustaría agradecerle por al menos tratar de resolver el problema y solicitarle que verifique los 2 problemas que he mencionado aquí. pasar un buen rato.
Hrish
Esto es lo que reuní hoy basado en la respuesta de Frantique
Mat Schaffer
6

Si no puede --without-libssh2reemplazarlo --with-libssh2, puede buscar --without-ssly agregar --with-libssh2 , probado con curl Versión 7.35.0 en Ubuntu 14.04.2

Respuesta personalizada de Frantique:

Descargue y descomprima la fuente curl. Después de esto:

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

Encuentra --without-ssly agrega --with-libssh2, en mi caso, se ve así:

antes de

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

Despué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

Ahora construya los paquetes:

cd ..
sudo dpkg-buildpackage
cd ..

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

Aquí hay otro buen tutorial para su problema.

Más información sobre la respuesta de Frantique.

JumpLink
fuente
5

La respuesta de Frantique funcionó para mí, sin embargo, cuando intenté actualizar mi sistema, mi administrador de paquetes quería revertir la instalación a un rizo que no tiene sftp / scp.

Para evitar tener que reinstalar curl con sftp / scp después de cada actualización:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Use apt-mark si usa apt.

Lea esta página si desea obtener más información sobre cómo evitar actualizaciones de un paquete específico.

Tenga en cuenta que eventualmente alguna actualización futura no podrá continuar hasta que elimine la retención.

Si por casualidad está utilizando PHP y necesita sftp en curl, debe consultar phpseclib, que podría ser mucho más fácil de instalar y mantener.

usuario12345
fuente
¿Debería sostenerse también el rizo o no es necesario?
David Oliver
1

Aquí es cómo construir curl con soporte de libssl para Ubuntu 18.04. LTS:

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

cd curl-*

Descargue el parche y el parche 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
  • O alternativ reemplazar en el archivo el debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    con

    CONFIGURE_ARGS += --with-libssh2
    

Luego compila e instala los paquetes:

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>

Espero que ayude a alguien.

Wittich
fuente