我尝试编写一个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文件中生成了公钥。
有人可以帮忙吗?
答案 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不提供此类功能。