在PHP中检查与ssh2函数的连接

时间:2011-03-04 17:48:24

标签: php ssh sftp

我需要检查与函数http://php.net/manual/en/function.ssh2-connect.php

的连接

但是,如果我像这样检查

$connection = ssh2_connect('myserver.com', 22);         
if (!$connection){
    echo 'no connection';
}else{
    echo 'connection ok';
}

我从来没有进入“echo'没有连接';”

你能解释一下为什么吗? 以及如何进行这样的检查?

提前致谢!

4 个答案:

答案 0 :(得分:1)

这取决于您的服务器。尝试连接到一些不存在的,看看会发生什么。

如果您只需要检查连接,那么您可以使用类似http://php.net/manual/en/function.fsockopen.php

的内容

答案 1 :(得分:1)

基本上,您应该使用ssh2_auth_password或ssh2_auth_public_key_file等函数,并结合ssh2_connect函数来检查连接是否经过身份验证

$connection = ssh2_connect("myserver.com", 22);
if(ssh2_auth_password($connection, "username", "password")){
echo "connection is authenticated";
}
else{
echo "failed!"
}

希望这有帮助!

答案 2 :(得分:0)

看起来第4个参数$callbacks可能会对此问题产生一些反馈。

问题可能是由于无法连接(Duh)。这可能是因为防火墙,没有互联网,SSH上的安全性很高。尝试在PHP框中调用# ssh -v <host>以查看问题所在。

答案 3 :(得分:-1)

为什么phpseclib, a pure PHP SSH implementation的另一个例子比PECL的ssh2扩展更好。