Php 使用公钥进行身份验证

Php 使用公钥进行身份验证,php,private-key,public-key,libssh2,Php,Private Key,Public Key,Libssh2,简而言之,我正在尝试使用PHP的“ssh2\u auth\u pubkey\u file”函数登录到远程服务器。而且它从未通过认证。我的密钥是PuTTYgen生成的,我试图在本地访问它们,但无法使其工作 我读过多篇StackOverflow文章和其他论坛,但我找不到任何解决方案 ssh2_auth_pubkey_file( $conn, $sftpUsername, 'C:/my/path/public_key.pub', 'C:/my/path/private_

简而言之,我正在尝试使用PHP的“ssh2\u auth\u pubkey\u file”函数登录到远程服务器。而且它从未通过认证。我的密钥是PuTTYgen生成的,我试图在本地访问它们,但无法使其工作

我读过多篇StackOverflow文章和其他论坛,但我找不到任何解决方案

ssh2_auth_pubkey_file(
    $conn,
    $sftpUsername,
    'C:/my/path/public_key.pub',
    'C:/my/path/private_key.ppk'
);

当我使用“ssh2\u auth\u password”时,我可以毫无问题地连接到服务器,但公钥-私钥身份验证给我带来了很多问题…

我希望它能帮助别人 因为我自己花了很多时间在这上面 最终我解决问题的办法是做两件事

  • 确保www数据用户(在Apache中)对“id_rsa.pub”和“id_rsa”文件都具有读取权限,不要将它们放在任何站点HTTP文件夹中
  • 确保您的私钥为RSA格式,并且没有任何密码/短语
  • 通过运行以下命令将“BEGIN OPENSSH私钥”转换为“BEGIN RSA私钥”

    ssh-keygen -p -m PEM -f PRIVATE_KEY
    

    您是否在ssh2\u auth\u pubkey\u文件上遇到异常或返回值错误?如果返回false,则可能是密钥错误。我收到以下消息:警告:ssh2\u auth\u pubkey\u file():使用公钥的测试仪身份验证失败:密钥数据无效,不是base64编码的。。。