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

使用ssh2_connect()连接Ubuntu服务器遇-44错误求助

排查与解决ssh2_connect()连接Ubuntu服务器的错误

错误信息

ssh2_connect(): Error starting up SSH connection(-44): Unable to ask for ssh-userauth service

环境信息

  • PHP版本:8.3.1
  • Libssh2版本:1.11.0
  • Ubuntu版本:22.04.3 LTS (Jammy Jellyfish)

排查步骤与解决方案

1. 检查SSH服务器配置

编辑Ubuntu服务器上的/etc/ssh/sshd_config文件,确认以下配置:

  • 若使用密码登录,确保PasswordAuthentication yes;若用密钥登录,确保PubkeyAuthentication yes
  • 将ChallengeResponseAuthentication设为no,避免干扰认证流程
  • 检查AllowUsers/AllowGroups是否限制了登录用户,需确保目标用户在允许列表内

修改后重启SSH服务:

sudo systemctl restart sshd

2. 验证Libssh2与PHP扩展兼容性

重新编译安装适配版本的php-ssh2扩展,确保与当前Libssh2和PHP版本匹配:

pecl uninstall ssh2
pecl install ssh2-1.4.1  # 该版本适配PHP8.3及Libssh2 1.11.0

安装后在php.ini中添加extension=ssh2.so,重启PHP服务(如php-fpm或Apache)。

3. 测试基础SSH连接

先通过系统命令行测试服务器连通性,排除网络或服务器基础问题:

ssh username@your-server-ip

如果命令行能正常连接,说明问题出在PHP扩展层面;若命令行也失败,先解决服务器SSH的基础连接问题(如防火墙端口开放、网络路由等)。

4. 调整PHP连接参数

确保代码中ssh2_connect()的参数正确,尝试禁用压缩功能:

// 指定端口(默认22,若修改过需对应调整)
$connection = ssh2_connect('your-server-ip', 22);

// 尝试禁用压缩
$connection = ssh2_connect('your-server-ip', 22, ['compression' => 'none']);

5. 查看SSH服务器日志

在Ubuntu服务器上查看认证日志,获取更详细的错误细节:

sudo tail -f /var/log/auth.log

触发PHP连接请求时,观察日志中的报错信息,定位具体的认证或连接异常点。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:05:59