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