使用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
相关产品推荐
相关产品推荐

