使用php-ssh2构建一个docker容器。php 7.2版尝试使用时
$con = ssh2_connect('hostname');
我得到了Error starting up SSH connection(-43): Failed getting banner
。有趣的是这里的43
。43
的意义是什么。这是什么意思?你知道怎么解决这个问题吗?没有重载,手动运行连接。
深入libssh2
这个数字-43
是直接来自libssh2
,特别是LIBSSH2_ERROR_SOCKET_RECV
的错误代码。Failed getting banner
消息是伴随错误代码的动态错误消息。这两条信息给出了抛出此错误的位置,即在receive_banner
中。
根本问题
这是由于libssh2
在初始化SSH会话时尝试从套接字中读取时,套接字抛出了一个接收错误。服务器配置错误,没有发送横幅,或者由于某种原因导致基础连接断开。
解决方案
最好的做法似乎是对这类错误进行适当的重试。您正在连接到一个可能会失败的网络。随着连接的服务器数量的增加,您将遇到由底层网络导致的错误。适当的错误处理是您的最佳做法。
您可以从PHP文档中找到如何设置异常处理程序。