Làm cách nào để bật Hỗ trợ SFTP trong cURL?


15

Tôi đã cài đặt curl-7.27.0 và nó hoạt động tốt. Tuy nhiên, khi tôi chạy curl -V, tôi nhận được:

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

Làm cách nào để kích hoạt giao thức SFTP?

Câu trả lời:


15

Bạn phải biên dịch curlvới hỗ trợ sftp trước.

Tải về và giải nén nguồn curl. Sau đó:

sudo apt-get install build-Essential debrcper libssh2-1-dev
sudo apt-get nguồn libcurl3
sudo apt-get build-dep libcurl3

cd curl-x.xx.x / debian

quy tắc nano

tìm và thay thế "--without-libssh2" bằng "--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

Cập nhật các lệnh với các phiên bản đầy đủ, dĩ nhiên. Thêm thông tin ở đây .


Tôi đã trải qua điều đó khi tôi googled nó, làm thế nào có một vấn đề nhỏ mà tôi phải đối mặt trong đó. những gì bạn đã xuất hiện trên đó có trong liên kết này . <br/> ** 1) bao giờ tôi không thể tìm thấy thư mục hoặc tệp curl-x.xx.x / debian ở bất cứ đâu ngay cả sau khi trích xuất nguồn curl? <br/> 2) Có thể là tôi không có ý tưởng nào là nguồn đúng? bao giờ nguồn tôi tải xuống là trong Nguồn Curl
Hrish

Tuy nhiên, tôi muốn cảm ơn bạn ít nhất là cố gắng giải quyết vấn đề và yêu cầu bạn vui lòng kiểm tra 2 vấn đề mà tôi đã đề cập ở đây. có một thời gian gr8.
Hrish

Đây là những gì tôi đưa ra hôm nay dựa trên câu trả lời của Frantique
Mat Schaffer

6

Nếu bạn không thể tìm thấy --without-libssh2để thay thế bằng --with-libssh2bạn có thể tìm kiếm --without-sslchắp thêm --with-libssh2 , hãy thử nghiệm với phiên bản curl Phiên bản 7.35.0 trên Ubuntu 14.04.2

Câu trả lời tùy chỉnh từ Frantique:

Tải về và giải nén nguồn curl. Sau đó:

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

Tìm --without-sslvà nối --with-libssh2, trong trường hợp của tôi, nó trông như thế này:

Trước

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

Sau

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

Bây giờ xây dựng các gói:

cd ..
sudo dpkg-buildpackage
cd ..

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

Đây là một hướng dẫn tốt cho vấn đề của bạn.

Thông tin thêm về câu trả lời của Frantique.


5

Câu trả lời của Frantique đã làm việc cho tôi - tuy nhiên khi tôi cố gắng nâng cấp hệ thống của mình, người quản lý gói của tôi muốn hoàn nguyên cài đặt trở lại một lọn tóc không có sftp / scp.

Để tránh phải cài đặt lại curl với sftp / scp sau mỗi lần nâng cấp:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Sử dụng apt-mark nếu bạn sử dụng apt.

Đọc trang này nếu bạn muốn biết thêm thông tin về việc ngăn chặn cập nhật của một gói cụ thể.

Lưu ý rằng cuối cùng một số nâng cấp trong tương lai có thể không thể tiếp tục cho đến khi bạn loại bỏ việc giữ.

Nếu tình cờ bạn đang sử dụng PHP và cần sftp trong curl - bạn nên kiểm tra phpseclib có thể dễ cài đặt và bảo trì hơn nhiều.


'Curl' cũng nên được tổ chức, hoặc điều này là không cần thiết?
David Oliver

1

Dưới đây là cách xây dựng curl với hỗ trợ libssl cho 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-*

Tải xuống Bản vá và vá 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
  • Hoặc Alternativ thay thế trong tệp debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    với

    CONFIGURE_ARGS += --with-libssh2
    

Sau đó xây dựng và cài đặt các gói:

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>

Hy vọng rằng sẽ giúp được ai đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.