身份验证失败ssh2_auth_pubkey_file()

时间:2013-07-26 12:51:42

标签: php ssh remote-access libssh2

我尝试编写一个PHP脚本,通过ssh连接到远程服务器并执行命令。 到目前为止,这是我的代码:

 $ssh = ssh2_connect($ip,22);
 $boolean = ssh2_auth_pubkey_file($ssh, $user, './pubkey.pub', './privatekey.ppk');
 $stream = ssh2_exec($ssh, $command);
 stream_set_blocking($stream, true);

我的脚本返回以下异常:

 Warning: ssh2_auth_pubkey_file() [function.ssh2-auth-pubkey-file]: Authentication failed for $user using public key in file.php

当我连接Putty和我的私钥时,我可以毫无问题地连接。

我使用PuttyGen从我的.ppk文件中生成了公钥。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

就个人而言,我认为你最好不要使用phpseclib, a pure PHP SSH implementation。例如

<?php
include('Net/SSH2.php');
include('Crypt/RSA.php');

$ssh = new Net_SSH2('www.domain.tld');
$key = new Crypt_RSA();
$key->loadKey(file_get_contents('privatekey'));
if (!$ssh->login('username', $key)) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>

除此之外,它不需要单独的公钥和私钥文件。这对你来说是一个潜在的问题。公钥/私钥文件不匹配。

此外,使用phpseclib,您可以启用日志记录并查看它确实失败的位置,而libssh2不提供此类功能。