我正在try 通过php curl连接到SFTP目的地,并使用密钥身份验证.

我设法连接到cURL之外,使用了Open SSH:(它起作用了)

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

但是,我不能在cURL中重现这个连接,我有一个身份验证失败错误.那件事怎么可能?

    $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);

以下是以下内容:

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

我确信密钥的有效性,我与远程服务器判断了 fingerprint ,并设法连接到了php-curl之外.

我还判断了我的 keys 是否处于受限访问和可访问状态

推荐答案

最后,ubuntu LTS 14使用了libgcrypt实用程序,该实用程序使用以"-Begin OPENSSH-"开头的私钥创建SSH密钥,在SFTP的情况下,我们需要一个以"-Begin RSA Private Key-"开头的.pem,所以我转换了我的私钥,它起作用了

ssh-keygen -f id_rsa -m pem -p

Php相关问答推荐

使用PHP阅读XML提要

如何显示每个分类的当前术语的帖子中包含的前20个标签,不包括标签分类

如何在Foreach语句中使用php和li按降序排序?

为什么在我的PHP联系人脚本中开机自检后出现未定义变量错误?

使用列入黑名单的单词和自定义业务逻辑的组合将特定的子字符串包装在HTML标记中

Mod_重写子目录中相应的php文件

在冲突和几何上插入的Postgres参数化查询在PHP中不起作用

针对给定产品类别的WooCommerce计数审核

PHP文件上载问题-";Move_Uploaded_Files";未按预期工作

如何按类别过滤自定义帖子类型

哪里的表现能更好?

是否有条件判断是否发布了另一个Wordpress页面?

使用简码在 WooCommerce 我的帐户中显示一些用户数据

无法在 WordPress 上获取 JSON 数据

WooCommerce:如果购物车中已存在产品,则增加购物车商品数量

图片上传成功

Google Drive API:为什么使用服务帐户在下载文件时会将我带到 Google Drive 登录窗口?

我试图在我的视图上显示从数据库中获取的数据,但我无法显示它.拉维尔 10.x /

如何在供应商名称后将自定义徽章添加到商品详情

用于多态服务的 Symfony setter 注入