Как включить поддержку SFTP в cURL?

Я установил curl-7.27.0, и он работает нормально, но когда он не работает, запустите команду ниже, чтобы узнать, работает ли она сейчас, но она показала, что:


Результат команды 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 libidn / 1.22 librtmp / 2.3


Протоколы: файл dict ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp


Особенности: GSS-согласование IDN IPv6 Largefile NTLM SSL libz

15
задан 2 October 2012 в 16:55

4 ответа

Сначала вы должны скомпилировать curl с поддержкой sftp.

Загрузите и распакуйте источник curl. После этого:

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

найдите и замените «--without-libssh2» на «--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

Обновите команды соответствующими версиями ofcourse. Более подробная информация здесь .

0
ответ дан 2 October 2012 в 16:55

Если вы не можете найти --without-libssh2 для замены на --with-libssh2, вы можете найти --without-ssl и , добавьте --with-libssh2, протестировано с помощью curl Version 7.35.0 на Ubuntu 14.04.2

Индивидуальный ответ от Frantique:

Загрузите и распакуйте источник скручивания. После этого:

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

Найдите --without-ssl и добавьте --with-libssh2, в моем случае это выглядит так:

До

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

После

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

Теперь соберите пакеты:

cd ..
sudo dpkg-buildpackage
cd ..

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

Вот еще один хороший урок для вашей проблемы.

Подробнее об ответе Франтика.

0
ответ дан 2 October 2012 в 16:55

Ответ Frantique работал для меня - однако, когда я попытался обновить свою систему, мой менеджер пакетов захотел вернуть установку обратно в curl без sftp / scp.

Чтобы избежать переустановки curl с помощью sftp / scp после каждого обновления:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Используйте apt-mark, если вы используете apt.

Прочтите эту страницу , если хотите получить больше информации о предотвращении обновления определенного пакета.

Обратите внимание, что в конечном итоге некоторые будущие обновления могут не продвинуться, пока вы не уберете удержание.

Если случайно вы используете PHP и вам нужен sftp в curl - вам следует проверить phpseclib , который может быть намного проще в установке и обслуживании.

0
ответ дан 2 October 2012 в 16:55

Вот как собрать curl с поддержкой libssl для 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-*

Загрузите патч и исправьте 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
  • или альтернативный заменить в файле [ 116]:

    CONFIGURE_ARGS += --without-libssh2` 
    

    с

    CONFIGURE_ARGS += --with-libssh2
    

Затем соберите и установите пакеты:

sudo dpkg-buildpackage -uc -us
# -us Do not sign the source package.
# -uc Do not sign the .changes file.

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>

Надежда, которая кому-нибудь поможет. [ 1114]

0
ответ дан 2 October 2012 в 16:55

Другие вопросы по тегам:

Похожие вопросы: