关于ssh2_auth_pubkey_file使用报错的问题2

问题

继之前的问题解决了之后,换了一台其他设备,又报了其他错误,记录一下,报错大概如下:

PHP Warning:  ssh2_connect(): Error starting up SSH connection(-5): Unable to exchange encryption keys in /var/www/test.php on line 15
PHP Warning:  ssh2_auth_pubkey_file() expects parameter 1 to be resource, boolean given in /var/www/test.php on line 16

根据提示信息搜索了一下,也对比了一下两台设备的区别,发现这台设备升级过openssh,版本为OpenSSH_8.8p1, OpenSSL 1.0.2g 1 Mar 2016

网上的说法大多都是说高版本不再支持ssh-rsa,ssh-dss,于是ssh2_connect的时候尝试各种算法的配置,依然报错…

另外看文档ssh2_connecthostkey参数支持的可选值也就只有ssh-rsa and ssh-dss

解决方案:

最后又看到一个方案升级下libssh2库,抱着试试看的心态,又重新编译安装了一下libssh2,之前的安装的版本是1.8.0-2.1build1,升级到libssh2-1.11.0,然后重新编译php ssh2扩展,成功解决!

# php --ri ssh2
ssh2

SSH2 support => enabled
extension version => 1.4
libssh2 version => 1.11.0
banner => SSH-2.0-libssh2_1.11.0

参考

stackoverflow.com/questions/458822...
www.boydata.com/post/243.html

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!