简体   繁体   中英

Authentication failure with curl in PHP ( openssh connexion OK )

I am trying to connect via php curl on an SFTP destination, with key authentication.

I manage to connect outside of curl, with openSSH: ( it work )

sftp -i myPrivateKey sftp://myusername@destination.com

however, I cannot reproduce this connection in curl, I have an authentication failure error. how is that possible?

    $dest = 'sftp://myusername@mydestination:22';

    $curlHandler = curl_init();
    curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curlHandler, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curlHandler, CURLOPT_URL, $dest);
    curl_setopt($curlHandler, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
    curl_setopt($curlHandler, CURLOPT_VERBOSE, true);
    curl_setopt($curlHandler, CURLOPT_SSH_PUBLIC_KEYFILE, mypublickey);
    curl_setopt($curlHandler, CURLOPT_SSH_PRIVATE_KEYFILE,myprivatekey);

    $resp = curl_exec($curlHandler);

log:

* SSH public key authentication failed: Callback returned error
* Failure connecting to agent
* Authentication failure
* Closing connection 0

I am sure of the validity of the keys, I checked the fingerprints with the remote server, and I manage to connect outside of php-curl.

I also checked that my keys were in restricted access and accessible

Finally, it turns out that ubuntu LTS 14 uses the libgcrypt utility, which creates SSH keys with private keys starting with" ----BEGIN OPENSSH ---" and in the case of SFTP, we need a.pem starting with "-----BEGIN RSA PRIVATE KEY-----", so I converted my private key, and it worked

ssh-keygen -f id_rsa -m pem -p

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM