卷曲的SFTP公钥验证失败“的错误回调”(cURL sftp public key authenti

2019-07-19 14:20发布

我有一些PHP代码效果很好上传使用cURL这是简单地使用用户密码的FTP主机的文件,现在我已经上传到服务器,只允许公共密钥身份验证,并正在错误:“* SSH公钥验证失败:回调返回错误”

我有一个问题的钥匙,因为他们以正确的格式不是,但此后将它们放在正确的单行格式,这种停止“不是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

任何帮助表示赞赏

Answer 1:

还有当你的libssh2是建立与libgcrypt情况下(基于Debian的发行版)。 在那些使用PEM编码的私钥文件:

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


Answer 2:

PPK是修补剂私钥,您需要将其导出为一个开放的(使用的puttygen去Conversations->出口的OpenSSH)



Answer 3:

你可能有phpseclib更好的运气,纯粹的PHP执行SFTP。 例如。

<?php
include('Net/SFTP.php');

$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

// puts a three-byte file named filename.remote on the SFTP server
$sftp->put('filename.remote', 'xxx');
?>


Answer 4:

libssh2在Debian发行(例如Ubuntu的LTS 14.04)使用libgcrypt不支持密码短语。 使用一键无密码或由亚历山大的回答描述生成PEM关键。

更多信息可从下链路中找到: 尝试使用ssh2_auth_pubkey_file连接()



文章来源: cURL sftp public key authentication fails “Callback Error”
标签: php curl ftp sftp scp