Como habilitar o suporte a SFTP no cURL?

12

Eu instalei o curl-7.27.0 e ele está funcionando bem, como sempre ele não está funcionando, execute o comando abaixo para descobrir se ele está agora, mas ele mostrou que:


Resultado do comando 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 libid / 1,22 librtmp / 2,3


Protocolos: dit arquivo ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp


Características: GSS-Negociar com IDN IPv6 Largefile NTLM SSL libz

    
por Hrish 02.10.2012 / 14:55

3 respostas

11

Você tem que compilar curl com o suporte sftp primeiro.

Faça o download e descompacte a fonte de curl. Depois disso:

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 rules

encontre e substitua "--without-libssh2" por "--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

Atualize os comandos com as versões adequadas, claro. Mais informações aqui .

    
por Frantique 02.10.2012 / 15:02
6

Se você não encontrar --without-libssh2 para substituir por --with-libssh2 , poderá pesquisar por --without-ssl e anexar --with-libssh2 , testado com a versão curl 7.35.0 no Ubuntu 14.04.2

Resposta personalizada da Frantique:

Faça o download e descompacte a fonte de curl. Depois disso:

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

Encontre --without-ssl e anexe --with-libssh2 , no meu caso, é assim:

Antes

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

Depois de

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

Agora crie os pacotes:

cd ..
sudo dpkg-buildpackage
cd ..

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

Aqui está outro bom tutorial para o seu problema.

Mais informações sobre a resposta de Frantique.

    
por JumpLink 30.06.2015 / 14:29
4

A resposta de Frantique funcionou para mim - no entanto, quando tentei atualizar meu sistema, meu gerenciador de pacotes queria reverter a instalação de volta para um curl que não tivesse sftp / scp.

Para evitar reinstalar o curl com o sftp / scp após cada atualização:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Use o apt-mark se você usar o apt.

Leia esta página se quiser mais informações sobre evitando atualizações de um pacote específico.

Observe que, eventualmente, alguma atualização futura pode não ser possível avançar até que você remova a retenção.

Se por acaso você estiver usando PHP e precisar do sftp no curl - você deve verificar phpseclib que pode ser muito mais fácil de instalar e instalar manter.

    
por user12345 30.05.2013 / 02:10