Como habilitar o suporte SFTP no cURL?

15

Instalei o curl-7.27.0 e está funcionando bem. No entanto, quando corro curl -V, recebo:

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

Como habilito o protocolo SFTP?

Hrish
fonte

Respostas:

15

Você precisa compilar curlcom o suporte sftp primeiro.

Baixe e descompacte a fonte de curvatura. Depois disso:

sudo apt-get install debhelper essencial para compilação libssh2-1-dev
fonte suc apt-get libcurl3
sudo apt-get compilação-dep libcurl3

cd curl-x.xx.x / debian

regras nano

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 .

Frantique
fonte
Eu já passei por isso quando pesquisei no Google, como sempre há um pequeno problema que estou enfrentando nisso. o que você escreveu lá em cima está neste link . <br/> ** 1) como sempre não consegui encontrar o diretório ou arquivo curl-x.xx.x / debian em qualquer lugar, mesmo depois de extrair o código curl? <br/> 2) É possível que eu não tenha uma idéia de qual é a fonte certa? como sempre a fonte I download está neste Fonte Onda
Hrish
Ainda assim, gostaria de agradecer por pelo menos tentar resolver o problema e solicitar que você verifique os dois problemas que mencionei aqui. tenha um tempo gr8.
Hrish
Aqui está o que eu coloquei hoje com base na resposta do Frantique - gist.github.com/matschaffer/966b95d160d02d377700
Mat Schaffer
6

Se você não conseguir --without-libssh2substituir, --with-libssh2pode procurar --without-ssle acrescentar --with-libssh2 , testado com curl Versão 7.35.0 no Ubuntu 14.04.2

Resposta personalizada da Frantique:

Baixe e descompacte a fonte de curvatura. 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-ssle acrescente --with-libssh2, no meu caso, fica 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 construa 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.

JumpLink
fonte
5

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

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

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Use apt-mark se você usar apt.

Leia esta página se desejar obter mais informações sobre como impedir atualizações de um pacote específico.

Observe que, eventualmente, alguma atualização futura pode não conseguir avançar até você remover a retenção.

Se por acaso você estiver usando PHP e precisar do sftp in curl - verifique o phpseclib, que pode ser muito mais fácil de instalar e manter.

user12345
fonte
A 'curvatura' também deve ser realizada ou isso não é necessário?
David Oliver
1

Aqui está como criar curl com suporte libssl para o 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-*

Faça o download do Patch e aplique 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, alternativamente, substitua no arquivo debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    com

    CONFIGURE_ARGS += --with-libssh2
    

Em seguida, crie e instale os pacotes:

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 ajude alguém.

wittich
fonte