SSH2 错误 - 找不到兼容的服务器到客户端消息身份验证算法

问题描述 投票:0回答:1

使用 ssh 密钥连接到 ssh 时出现错误。

注意:SSH 从终端连接没有任何问题。 PHP 版本是:7.3

以下是我连接 SSH 的代码:

    $this->ssh  = new SSH2(self::$config['host'], self::$config['port']);
    $key        = new RSA();
    $key->setPassword(self::$config['password']);
    $key->loadKey(file_get_contents(self::$config['key']));
    if (!$this->ssh->login(self::$config['username'], $key)) {
    exit('Login Failed');
    }

以下错误:

错误异常

找不到兼容的服务器到客户端消息身份验证算法

在供应商/phpseclib/phpseclib/phpseclib/Net/SSH2.php:1710 第1706章 1707▕ 分段浏览_第 1708 章 分段浏览_第 1709 章 第1710章 分段浏览_第 1711 章 第1712章 1713▕ 分段浏览_第 1714 章

我在谷歌上搜索但没有找到与此错误相关的任何内容。

然后我检查了它是否可以从终端运行,并且使用私钥可以正常运行。

---更新---

我已经向服务器支持提出了问题,他们在下面提到了,但他们没有在这个话题上帮助我,因为他们说

服务器更改将导致服务器变得更加安全,因为您现在使用的是符合 PCI 的服务。 我能做的就是告诉你哪些算法正在被使用 服务器供您修改代码,使其符合新的安全性 您的服务器

您应该能够使用其中任何一个进行连接:

迪菲-赫尔曼-group1-sha1 迪菲-赫尔曼-group14-sha1 迪菲-赫尔曼-group14-sha256 迪菲-赫尔曼-group16-sha512 diffie-hellman-group18-sha512 diffie-hellman-group-exchange-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256

[电子邮件受保护] [电子邮件受保护]

php linux ssh phpseclib ssh2
1个回答
0
投票
得到服务器支持团队的回复后,我的发现如下:

我们的服务器升级了,现在符合 PCI 标准,我使用的是 phpseclib 2。所以,算法不匹配。我们新升级的服务器不支持 phpseclib 版本 2 的算法,因此他们无能为力。所以,我认为这可能是当前版本的 phpseclib 的问题,也许较新版本的 phpseclib 具有我的新服务器支持的算法。但在将其升级到 phpseclib 3 之前,我必须删除 laravelcollective/remote,因为它需要 phpseclib 2 并且由于 phpseclib 3 无法安装(在删除 laravelcollective/remote 之前确保它没有在任何地方使用)。因此,我从 Composer 中删除了 laravelcollective/remote 并添加了 phpseclib 3 并安装了它。为了使用 phpseclib 3,已对代码进行了以下更改,代码如下。

这是旧代码:

$this->ssh = new SSH2(self::$config['host'], self::$config['port']); $key = new RSA(); $key->setPassword(self::$config['password']); $key->loadKey(file_get_contents(self::$config['key'])); if (!$this->ssh->login(self::$config['username'], $key)) { exit('Login Failed'); }
这是新代码:

$this->ssh = new SSH2(self::$config['host'], self::$config['port']); // Load the private key $privateKey = PublicKeyLoader::load(file_get_contents(self::$config['key']), self::$config['keyphrase']); if (!$this->ssh->login(self::$config['username'], $privateKey)) { exit('Login Failed'); }
现在 SSH 和以前一样工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.