中国设计联盟
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
网站建设 域名注册 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计  虚拟主机 域名注册 acg王国 ACG玩家
求创科技
网站建设
中国福网
招聘求职
中国互联
艺魂宝库网
中资源
当前位置:网络学院首页 >> 编程开发 >> php >> SSH加PHP相连接保障数据库安全

SSH加PHP相连接保障数据库安全 (2)

来源:中国设计秀    作者:    点击:29     加入收藏    发表评论
0
顶一下
第二种方法:外壳
  同样道理,你也可以为如下的代码编写函数或者一个类。不过,本文仅仅提供基本观念:
   
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("server1.example.com", 22))){  echo "fail: unable to establish connection\n";  }

else {  // try to authenticate with username root, password secretpassword  

if(!ssh2_auth_password( $con, "root", "secretpassword")) {  echo "fail: unable to authenticate\n";  }

else {  // allright, we’re in!  echo "okay: logged in...\n";  // create a shell  

if(!( $shell = ssh2_shell( $con, ’vt102’, null, 80, 40, SSH2_TERM_UNIT_CHARS))){  echo "fail: unable to establish shell\n";  }

else{  stream_set_blocking(  $shell, true );  // send a command  fwrite( $shell,"ls -al\n");  sleep(1);  // & collect returning data   $data = "";  

while(  $buf = fread( $shell,,4096) ){   $data .=  $buf;  }  fclose( $shell);  }  }  }

  小提示:
  有时服务器忙碌,或者一个连接出错,缓冲区没有数据,PHP脚本就会停止从一个命令输出(即使命令并没有完成!)中收集数据。你可以为此进行如下的操作:
   
ssh2_exec( $con, ’ls -al; echo "__COMMAND_FINISHED__"’ );

  现在,在你不断地检查缓冲区的循环中,只需要看一下COMMAND_FINISHED。因为你就可以知道你拥有了所有的数据。为了避免无限循环(死循环),可以用一个10秒的超时限制:
   
 $time_start = time();   $data = "";  while( true ){   $data .= fread( $stream, 4096);  if(strpos( $data,"__COMMAND_FINISHED__") !== false){  echo "okay: command finished\n";  break;  }  if( (time()- $time_start) > 10 ){  echo "fail: timeout of 10 seconds has been reached\n";  break;  }  }

  在上面的例子中,你最好将stream_set_blocking设为false。
  通过SSH发送文件
   
ssh2_scp_send( $con, "/tmp/source.dat", "/tmp/dest.dat", 0644);

  如果不能正常工作
  请检查如下的几个方面:
  依照本文检查你操作的每一步
  在服务器端,在sshd_config 中必须启用“PasswordAuthentication yes”。在大多数服务器上默认值是yes,不过有些情况下,你可能需要将下面的一行加入到文件中,即亲自动手打开这个功能:
   
/etc/ssh/sshd_config:  # Change to yes to enable tunnelled clear text passwords  PasswordAuthentication yes

  如果作了改变,就需要重新启动SSH:
   
/etc/init.d/ssh restart

[1] [2]
2007-08-27 15:25:00    出处:
Google
热点文章/相关文章
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口