web-dev-qa-db-ja.com

cURLでSFTPサポートを有効にする方法

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-Negotiate IDN IPv6 Largefile NTLM SSL libz

14
Hrish

まず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 

もちろん、適切なバージョンでコマンドを更新してください。詳細 こちら

15
Frantique

--without-libssh2に置き換えられる--with-libssh2が見つからない場合は、--without-sslおよびappend--with-libssh2、curlバージョンでテスト済み7.35.0onUbuntu 14.04.2

Frantiqueからのカスタマイズされた回答:

Curlソースをダウンロードして解凍します。その後:

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を追加します。私の場合、次のようになります。

Before

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

After

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

これは別の良いチュートリアルです あなたの問題について。

Frantiqueの回答の詳細。

6
JumpLink

Frantiqueの答えはうまくいきましたが、システムをアップグレードしようとしたときに、パッケージマネージャーがインストールをsftp/scpのないcurlに戻したいと思っていました。

アップグレードのたびにsftp/scpでcurlを再インストールする必要を回避するには:

Sudo aptitude hold libcurl3
Sudo aptitude hold libcurl3-gnutls

Aptを使用する場合は、apt-markを使用します。

このページを読む 特定のパッケージの更新を防止するための詳細情報が必要な場合。

最終的には、保留を解除するまで、将来のアップグレードが続行できない場合があることに注意してください。

偶然PHPを使用しており、curlでsftpが必要な場合は、 phpseclib をチェックアウトする必要があります。

5
user12345

Ubuntu 18.04のlibsslサポートでcurlをビルドする方法は次のとおりです。 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
  • またはalternativファイル内のdebian/rulesを置き換えます:

    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>

それが誰かを助けることを願っています。

0
wittich