使用 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