php 7.4,ssh_connect(),连接到 ubuntu 22.04 机器时“无法交换加密密钥”

php 7.4,ssh_connect(),连接到 ubuntu 22.04 机器时“无法交换加密密钥”

使用 ssh2_connect 时

ssh2_connect($this->host, $this->sshPort)

连接到运行 Ubuntu 22.04 的服务器时,我在客户端收到以下错误

PHP Warning:  ssh2_connect(): Error starting up SSH connection(-5): Unable to exchange encryption keys in /root/ssh.php on line 175
PHP Warning:  ssh2_connect(): Unable to connect to xxx.xxx.com in /root/ssh.php on line 175

我在服务器 auth.log 中收到以下错误

Unable to negotiate with xx.xx.xx.xx port 45574: no matching host key type found. Their offer: ssh-rsa,ssh-dss [preauth]

我找到了另一个帖子 这里这要求我做这件事,以及其他事情。完全没有运气

ssh2_connect($this->host, $this->sshPort , [ 'hostkey' => 'ecdsa-sha2-nistp256,ssh-rsa'])

我在客户端收到相同的错误,在服务器上收到以下错误

Unable to negotiate with xx.xx.xx.xx port 53942: no matching host key type found. Their offer: ssh-rsa [preauth]

看起来 ssh2_connect 仅允许 ssh-rsa 和 ssh-dss。

有没有人有解决方案允许 ssh2_connect 连接到运行 22.04 的 ubuntu 服务器

干杯

答案1

在 ubuntu 20 上,rsa 将不再起作用,但 ecdsa 可以起作用。

您是否真的使用 ecdsa 创建了新密钥

从该错误消息来看,它似乎无法找到 ecdsa 密钥。特别是在您尝试连接的主机服务器上

“未找到匹配的主机密钥类型”

如果有,他们是否拥有正确的权限?

您是否也尝试过更新 repo:(我正在使用 libssh2-1)

sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu/ focal 
main restricted universe multiverse"
sudo apt-get update
sudo apt -y install libssh2-1

相关内容