You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20.04下PHP ssh2_connect用ECDSA密钥时HOSTKEY方法覆盖失败求解

解决PHP ssh2扩展无法使用ECDSA主机密钥的问题

问题核心

Ubuntu 20.04官方源的libssh2版本为1.8.0,而ECDSA主机密钥支持需要1.9.0及以上版本,因此需要手动编译升级libssh2并重新编译PHP ssh2扩展。

具体操作步骤

1. 清理旧版本依赖

先卸载系统自带的libssh2和php-ssh2包,避免编译冲突:

apt purge -y libssh2-1 libssh2-1-dev php-ssh2
apt autoremove -y

2. 编译安装新版libssh2

以当前稳定版1.11.0为例,先安装编译依赖:

apt install -y build-essential libssl-dev wget

下载源码并编译安装:

wget https://www.libssh2.org/download/libssh2-1.11.0.tar.gz
tar zxf libssh2-1.11.0.tar.gz
cd libssh2-1.11.0
./configure --prefix=/usr/local/libssh2 --with-openssl
make && make install

3. 重新编译PHP ssh2扩展

让pecl编译时链接新安装的libssh2:

pecl uninstall ssh2
export PKG_CONFIG_PATH=/usr/local/libssh2/lib/pkgconfig
pecl install ssh2-1.3.1

安装完成后,确保php.ini中已启用扩展(若未配置则添加):

extension=ssh2.so

4. 验证与测试

重启PHP服务后,验证libssh2版本:

php -r "echo ssh2_version();"

输出应为你编译的版本(如1.11.0)。此时测试ECDSA主机密钥连接:

$connection = ssh2_connect('目标服务器地址', 22, [
    'hostkey' => 'ecdsa-sha2-nistp256'
]);
var_dump($connection);

额外处理(若PHP找不到libssh2)

如果出现库找不到的错误,添加系统库搜索路径:

echo "/usr/local/libssh2/lib" > /etc/ld.so.conf.d/libssh2.conf
ldconfig

Docker环境优化建议

将上述步骤写入Dockerfile,构建镜像时自动完成编译安装,示例片段:

RUN apt purge -y libssh2-1 libssh2-1-dev php-ssh2 && apt autoremove -y
RUN apt install -y build-essential libssl-dev wget
RUN wget https://www.libssh2.org/download/libssh2-1.11.0.tar.gz && \
    tar zxf libssh2-1.11.0.tar.gz && \
    cd libssh2-1.11.0 && \
    ./configure --prefix=/usr/local/libssh2 --with-openssl && \
    make && make install
RUN pecl uninstall ssh2 && \
    export PKG_CONFIG_PATH=/usr/local/libssh2/lib/pkgconfig && \
    pecl install ssh2-1.3.1
RUN echo "extension=ssh2.so" >> /etc/php/7.4/cli/php.ini && \
    echo "extension=ssh2.so" >> /etc/php/7.4/fpm/php.ini
RUN echo "/usr/local/libssh2/lib" > /etc/ld.so.conf.d/libssh2.conf && ldconfig

内容的提问来源于stack exchange,提问作者bobbybobbobbed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:15:38