我需要检查与函数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'没有连接';”
你能解释一下为什么吗? 以及如何进行这样的检查?提前致谢!
答案 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扩展更好。