使用 curl 执行 sftp 时出错

使用 curl 执行 sftp 时出错

我正在使用 IBM 的数据资源管理器导入某些数据,但出现此错误:

libcurl 不支持或禁用协议 sftp。

因此我从 Red Hat 手动运行了命令:

curl -user sftp://hostname.com/~/filename.csv

但出现此错误:

curl:(51)SSL 对等证书或 SSH 远程密钥不正常

为了查看是否支持 SFTP,我运行curl -V并得到以下结果:

curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 协议:tftp ftp telnet dict ldap ldaps http file https ftps scp sftp

有人知道哪里出了问题吗?谢谢。

答案1

IBM Data Explorer 可能与其自己的 libcurl 私有副本相链接,因此就支持而言,您在系统版本中看到的内容可能无法反映 IBM 版本的信息sftp

通常情况下,curl 的工作方式如下:

curl -u <username> sftp://hostname.com/~/filename.csv

这假设您ssh hostname.com之前已成功运行,应该已将正确的密钥条目添加到您的~/.ssh/known_hosts文件中。如果由于某种原因这有问题,您可以-k在 curl 命令行中添加以禁用 SSH 主机密钥检查。

答案2

这是 curl 命令行工具的一个问题,默认情况下,它会检查文件 ~/.ssh/known_hosts 中的主机密钥。如果没有,则连接将关闭,文件将不会被下载。要将密钥添加到 ~/.ssh/known_hosts,请运行以下命令

ssh-keyscan -t rsa host_name  >> ~/.ssh/known_hosts

另一方面,libcurl 不执行默认主机密钥检查,因此您不会遇到此问题。总之,默认行为应该相同,但事实并非如此。

相关内容