php ssh2_connect,php – 无法调用ssh2_connect()回调

除了打字错误,你没有做错什么: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'

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值