gpt4 book ai didi

php - cURL sftp 公钥认证失败 "Callback Error"

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:03:13 28 4
gpt4 key购买 nike

我有一些 php 代码可以很好地使用 cURL 将文件上传到仅使用用户和密码 ftp 的主机,现在我必须上传到一个只允许公钥 auth 的服务器并收到错误:“* SSH public key 认证失败:回调返回错误”

我遇到了 key 问题,因为它们的格式不正确,但后来将它们放入正确的单行格式中,这就停止了“不是 base64 编码”的错误。我在网上找不到有关此回调错误的太多帮助。

我的代码如下。

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_URL, 'sftp://user:@12.12.12.12:22/testfile.gz');
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($ch, CURLOPT_SSH_PUBLIC_KEYFILE,'C:\keys\public.pub');
curl_setopt($ch, CURLOPT_SSH_PRIVATE_KEYFILE,'C:\keys\private.ppk');
curl_setopt($ch, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,'2acfe24108c37a276a93ac3398a5oe8f');
curl_setopt($ch, CURLOPT_SSH_AUTH_TYPES,CURLSSH_AUTH_PUBLICKEY);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
$fp = fopen($localfile, 'r');
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
$sR = curl_exec ($ch);

这是运行测试的输出

* About to connect() to 12.12.12.12 port 22 (#0)
* Trying 12.12.12.12...
* connected
* Connected to 12.12.12.12 (12.12.12.12) port 22 (#0)
* SSH MD5 fingerprint: ebbc61b886c798b25073c912833ffers
* SSH authentication methods available: publickey
* Using ssh public key file C:\keys\public.pub
* Using ssh private key file C:\keys\private.ppk
* SSH public key authentication failed: Callback returned error
* Authentication failure
* Closing connection #0

感谢任何帮助

最佳答案

有些情况下(基于 debian 的发行版)您的 libssh2 是使用 libgcrypt 构建的。在那些中,使用 PEM 编码的私钥文件:

$ openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem

关于php - cURL sftp 公钥认证失败 "Callback Error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760798/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com