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


15

Я установил 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
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

Как включить протокол SFTP?

Ответы:


15

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

Загрузите и распакуйте исходный код. После того:

sudo apt-get установить build-essential debhelper libssh2-1-dev
sudo apt-get source libcurl3
sudo apt-get build-dep libcurl3

cd curl-x.xx.x / debian

нано правила

найти и заменить "--without-libssh2" на "--with-libssh2"

компакт диск ..

sudo dpkg-buildpackage

компакт диск ..

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

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


Я прошел через это, когда погуглил, как бы там ни была небольшая проблема, с которой я сталкиваюсь в этом. то, что вы упомянули, есть в этой ссылке . <br/> ** 1) как же я нигде не мог найти каталог или файл curl-x.xx.x / debian нигде, даже после извлечения источника curl? <br/> 2) Возможно ли, что у меня нет идеи, каков правильный источник?
однако

Тем не менее, я хотел бы поблагодарить вас, по крайней мере, за попытку решить проблему и попросить вас проверить 2 проблемы, которые я упомянул здесь. хорошо провести время.
Хриш

Вот что я собрал сегодня, основываясь на ответе Франтика
Мэт Шаффер

6

Если вы не можете найти --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

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

Больше информации об ответе Франтика.


5

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

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

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

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

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

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

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


Должен ли также быть «локон», или это не обязательно?
Дэвид Оливер

1

Вот как собрать 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
  • Или альтернативно замените в файле debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    с

    CONFIGURE_ARGS += --with-libssh2
    

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

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>

Надеюсь, это кому-нибудь поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.