我目前正在使用SSH2而不是PHP。这是我第一次这样做,我希望我能够得到一些可靠的反馈。
基本上,我尝试做的是验证服务器(通过SSH),运行命令,然后回显该命令的结果。
以下是我目前使用的内容:
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// log in at server1.example.com on port 22
if(!($con = ssh2_connect("myserver.com", 22))){
echo "fail: unable to establish connection\n";
} else {
// try to authenticate with username and password
if(!ssh2_auth_password($con, "myusername", "mypassword")) {
echo "fail: unable to authenticate\n";
} else {
// allright, we're in!
echo "okay: logged in...\n";
// execute a command
if(!($stream = ssh2_exec($con, "ls -al" )) ){
echo "fail: unable to execute command\n";
} else{
// collect returning data from command
stream_set_blocking( $stream, true );
$data = "";
while( $buf = fread($stream,4096) ){
$data .= $buf;
echo $data;
}
fclose($stream);
}
}
}
?>
现在,只是为了测试,我试图返回(回显)命令“ls -al”
我知道这个命令有效,因为我可以在Ubuntu的终端上这样做。最后,我知道它正在验证,因为,使用上面的当前代码,它回应“好吧:登录”。但是现在,这就是我所得到的一切 - 其他一切都是空白的。
对此的任何帮助都会很棒!
BTW,我正在尝试使用此处所示的方法:http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/
答案 0 :(得分:2)
ssh2_exec()经常过早返回。我发现的唯一真正的解决方案是使用phpseclib - 纯PHP SSH2实现: