对aws实例执行Curl命令失败



我已经设置了一个aws ec2 linux instnace,并配置了sftp服务器。

我可以用以下命令将curl命令从linux服务器的cli发送到aws实例:

curl sftp://username:password@ec2-instance/dir/

但当我使用下面的python代码中的相同命令时,它不起的作用

curl_easy_setopt(curl, CURLOPT_UPLOAD, sftp://username:password@ec2-instance/dir);

声明curl中不支持或禁用协议sftp*闭合连接-1卷曲错误1

我想知道为什么它可以与CLI一起使用,但不能从代码中使用。当我尝试使用pysftp时,结果也是一样的。如有任何帮助,我们将不胜感激。谢谢

默认情况下,ubuntu上的curl命令没有启用sftp,我建议您使用这个要点从源代码编译。

我已经在ubuntu 18.04 LTS上测试了这一点。

这个Gist链接包括以下文件:

  • build_curl_sftp.sh文件可以直接在Ubuntu
    操作系统上使用它们。

  • Dockerfile文件可以在启用cURL命令的情况下构建Docker镜像
    SFTP支持,并且可以使用cURL命令而不会污染主机操作系统上的原始
    cURL命令。

此处转载相同要点以供参考:

#!/bin/bash
export CPPFLAGS=-I/usr/local/include
export LDFLAGS="-L/usr/local/lib -Wl,-rpath,/usr/local/lib"
export LIBS="-ldl"
sudo sed -i -e "s/# deb-src /deb-src /g" /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y build-essential debhelper libssh-dev
cd /opt/
# Fetch cURL source code
sudo apt-get source curl
sudo apt-get build-dep -y curl
cd curl-*/debian/ && sudo sed -i -e "s@CONFIGURE_ARGS += --without-libssh2@CONFIGURE_ARGS += --with-libssh2@g" rules
cd curl-*/ && sudo dpkg-buildpackage -uc -us -b
# Install rebuilding packages
sudo dpkg -i curl_*.deb
sudo dpkg -i libcurl3-*.deb
sudo dpkg -i libcurl3-gnutls_*.deb
sudo dpkg -i libcurl4-gnutls-dev_7.58.0-2ubuntu3.8_amd64.deb libcurl4_7.58.0-2ubuntu3.8_amd64.deb

最新更新