0

我尝试编写一个 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 文件中生成了公钥。

有人可以帮忙吗?

4

1 回答 1

0

就个人而言,我认为您最好使用phpseclib,一个纯 PHP SSH 实现。例如。

<?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 不提供此类功能。

于 2013-07-30T06:30:22.610 回答