php ssh2_connect,php – 无法调用ssh2_connect()回调
除了打字错误,你没有做错什么:array(‘hostkey’,’ssh-rsa’)应该是array(‘hostkey’=>’ssh-rsa’)。函数ssh_connect()刚刚为连接失败返回false;当正在使用错误的凭据时,回调根本就不会被启动。有解决方案(例如,如下面的rubo77所提到的),但是我发现的将会给你最多的控制,并允许你做你想要的(例如跟踪MAC错误),是使用phpsecl
除了打字错误,你没有做错什么:array(‘hostkey’,’ssh-rsa’)应该是array(‘hostkey’=>’ssh-rsa’)。函数ssh_connect()刚刚为连接失败返回false;当正在使用错误的凭据时,回调根本就不会被启动。
有解决方案(例如,如下面的rubo77所提到的),但是我发现的将会给你最多的控制,并允许你做你想要的(例如跟踪MAC错误),是使用phpseclib库(http://phpseclib.sourceforge.net/ssh/intro.html)进行ssh连接,控制。它给出非常精确的命令控制,还包括日志记录。
这不是最简单的解决方案,但您可以像您直接在键盘/终端一样精细控制。
您可以控制超时,并可以对命令使用回调。但是,如果要更好的控制,请使用read()和write(),并且可以监视断开连接或其他问题。检查documentation on logging with phpseclib:您可以记录和解析日志,或调用getLastError()。
例如,日志文件将显示“断开连接关闭的服务器”,但也会告诉您是否在登录时使用不受支持的身份验证模式。
或者为了更多,阅读代码:这里,例如,是断开原因:
$this->disconnect_reasons = array(
1 => 'NET_SSH2_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT',
2 => 'NET_SSH2_DISCONNECT_PROTOCOL_ERROR',
3 => 'NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED',
4 => 'NET_SSH2_DISCONNECT_RESERVED',
5 => 'NET_SSH2_DISCONNECT_MAC_ERROR',
6 => 'NET_SSH2_DISCONNECT_COMPRESSION_ERROR',
7 => 'NET_SSH2_DISCONNECT_SERVICE_NOT_AVAILABLE',
8 => 'NET_SSH2_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED',
9 => 'NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE',
10 => 'NET_SSH2_DISCONNECT_CONNECTION_LOST',
11 => 'NET_SSH2_DISCONNECT_BY_APPLICATION',
12 => 'NET_SSH2_DISCONNECT_TOO_MANY_CONNECTIONS',
13 => 'NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER',
14 => 'NET_SSH2_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE',
15 => 'NET_SSH2_DISCONNECT_ILLEGAL_USER_NAME'
);
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)