Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phpseclib问题-SSH\u MSG\u USERAUTH\u失败:publickey*PHP_Php_Phpseclib - Fatal编程技术网

Phpseclib问题-SSH\u MSG\u USERAUTH\u失败:publickey*PHP

Phpseclib问题-SSH\u MSG\u USERAUTH\u失败:publickey*PHP,php,phpseclib,Php,Phpseclib,我在使用phpseclib时遇到了一些问题,就像我的第二篇文章一样,我已经解决了部分问题,但我无法让它正常工作 无论如何,问题是: 我已经使用composer安装了phpseclib,我正在使用这个测试脚本来连接到由amazon托管的VPS,这给我带来了一些麻烦,所以我的理解是我需要使用.pem密钥文件来进行身份验证。简单,对吗 这就是剧本: <?php include 'vendor/autoload.php'; $loader = new \Composer\Autoload\Cla

我在使用phpseclib时遇到了一些问题,就像我的第二篇文章一样,我已经解决了部分问题,但我无法让它正常工作

无论如何,问题是: 我已经使用composer安装了phpseclib,我正在使用这个测试脚本来连接到由amazon托管的VPS,这给我带来了一些麻烦,所以我的理解是我需要使用.pem密钥文件来进行身份验证。简单,对吗

这就是剧本:

<?php
include 'vendor/autoload.php';

$loader = new \Composer\Autoload\ClassLoader();
$loader->addPsr4('phpseclib\\', __DIR__ . 'vendor/phpseclib/phpseclib');
$loader->register();

use phpseclib\Crypt\RSA;
use phpseclib\Net\SSH2;

//$key = new Crypt_RSA();
$key = new RSA();
$ret = $key->loadKey(file_get_contents('Key_1.pem'));

if(!$ret){
    echo "loadKey failed\n";
    exit;
}

// Domain can be an IP too
$ssh = new SSH2('ip.ip.ip.ip');
if (!$ssh->login('username', $key)) {
    print_r($ssh->errors);
    exit('Login Failed');

}

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

?>
也许我在包含的路径上做错了什么

phpseclib位于:

vendor/phpseclib/phpseclib/phpseclib
然后我有其他文件夹


我不知道!请有人帮帮我

要检查路径是否正确,
var\u dump(file\u get\u contents('Key\u 1.pem'))
是否按预期提供了文件的内容?您不需要执行
$loader
,因为您正在执行
供应商/autoload.php
。无论如何,你能用PuTTY或其他SSH客户端使用相同的密钥连接到服务器吗?@neubert yep I SSH使用终端连接到它,使用ec2文档提供给我的2个命令!chmod 400 Key_1.pem ssh-I“Key_1.pem”ubuntu@ip.somestrings诸如此类works@ArSeN是的,我有一堆字符,所以,路径文件是好的@ManzoFilippo我对此进行了更深入的研究,并为自己准备了一个EC2实例来尝试。我在最新版本(2.0.11)中安装了phpseclib,我可以说,您的代码对我来说非常好。请检查:1)您的密钥\ 1.pem实际上包含您的私钥,而不是公钥?2)您更改了
$ssh->login('username',$key)
实际用户名的“username”部分,可能是您之前评论中的“ubuntu”
vendor/phpseclib/phpseclib/phpseclib