Jak włączyć obsługę SFTP w cURL?

15

Zainstalowałem curl-7.27.0 i działa dobrze. Jednak gdy biegnę curl -V, dostaję:

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

Jak włączyć protokół SFTP?

Hrish
źródło

Odpowiedzi:

15

curlNajpierw musisz skompilować z obsługą sftp.

Pobierz i rozpakuj źródło curl. Po tym:

sudo apt-get install niezbędny do kompilacji debhelper libssh2-1-dev
sudo apt-get source libcurl3
sudo apt-get build-dep libcurl3

cd curl-x.xx.x / debian

zasady nano

znajdź i zamień „--without-libssh2” na „--with-libssh2”

Płyta CD ..

sudo dpkg-buildpackage

Płyta CD ..

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

Zaktualizuj polecenia odpowiednimi wersjami, oczywiście. Więcej informacji tutaj .

Frantique
źródło
Przeszedłem przez to, kiedy go przejrzałem, jak zawsze mam z tym mały problem. to, co oceniłeś, znajduje się w tym łączu . <br/> ** 1) Jakkolwiek nigdy nie mogłem znaleźć katalogu lub pliku curl-x.xx.x / debian nawet po rozpakowaniu źródła curl? <br/> 2) Czy to możliwe, że nie mam pojęcia, które źródło jest właściwe?
jakkolwiek
Wciąż chciałbym podziękować za przynajmniej próbę rozwiązania problemu i poprosić o sprawdzenie 2 problemów, o których tu wspomniałem. mieć czas gr8.
Hrish,
Oto, co zestawiłem dzisiaj w oparciu o odpowiedź Frantique
Mat Schaffer
6

Jeśli nie możesz znaleźć --without-libssh2na --with-libssh2to, możesz wyszukać --without-ssli dołączyć --with-libssh2 , przetestowane z curl Wersja 7.35.0 na Ubuntu 14.04.2

Indywidualna odpowiedź od Frantique:

Pobierz i rozpakuj źródło curl. Po tym:

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

Znajdź --without-ssli dołącz --with-libssh2, w moim przypadku wygląda to tak:

Przed

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

Po

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

Teraz zbuduj pakiety:

cd ..
sudo dpkg-buildpackage
cd ..

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

Oto kolejny dobry samouczek dotyczący twojego problemu.

Więcej informacji na temat odpowiedzi Frantique.

JumpLink
źródło
5

Odpowiedź Frantique zadziałała dla mnie - jednak kiedy próbowałem zaktualizować system, mój menedżer pakietów chciał przywrócić instalację do wersji curl, która nie ma sftp / scp.

Aby uniknąć konieczności ponownej instalacji curl za pomocą sftp / scp po każdej aktualizacji:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Użyj apt-mark, jeśli używasz apt.

Przeczytaj tę stronę, jeśli chcesz uzyskać więcej informacji na temat zapobiegania aktualizacjom określonego pakietu.

Pamiętaj, że ostatecznie niektóre przyszłe aktualizacje mogą nie być w stanie przejść do przodu, dopóki nie usuniesz blokady.

Jeśli przypadkowo używasz PHP i potrzebujesz curl w sftp - powinieneś sprawdzić phpseclib, który może być znacznie łatwiejszy do zainstalowania i utrzymania.

użytkownik12345
źródło
Czy należy również „zawinąć”, czy też nie jest to konieczne?
David Oliver
1

Oto jak zbudować curl z obsługą libssl dla 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-*

Pobierz łatkę i załataj 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
  • Lub alternatywnie zamień w pliku debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    z

    CONFIGURE_ARGS += --with-libssh2
    

Następnie skompiluj i zainstaluj pakiety:

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>

Mam nadzieję, że komuś pomoże.

Wittich
źródło