php开源嘛
首页 | English | MySql数据库 | Php编程 | 建站杂烩 | 系统服务器 | 资源共享 | 专题 | 才桀网 | 支持论坛
  当前位置:主页>Php编程>文章内容
SSH与PHP相连接 确保传输数据的安全
来源:出处不明 作者:本站整理 发布时间:2007-08-11  

SSH与PHP相连接 确保传输数据的安全phpma.com

  SSH可以通过将联机的封包加密的技术进行资料的传递;使用SSH可以把传输的所有数据进行加密,即使有人截获到数据也无法得到有用的信息。同时数据经过压缩,大大地加快了传输的速度。总之,通过SSH的使用,可以确保资料传输比较安全并且传输效率较高。phpma.com

  不过,并非所有人知道PHP可以与SSH连接的特性以及与执行远程命令的能力,不过这方面却非常有用。由于我们可以在很多不同的方面利用PHP,因此它有很多设置选项来控制其行为。一组庞大的可选参数能够保证您可以将 PHP 用于许多不同的目的,但这同时也意味着这些参数和服务端配置的组合会带来一些安全问题。笔者一直在PHP CLI应用程序中使用SSH,笔者是从cronjobs中使用它的,不过一开始并非十分简单,可以说颇费周折。关于安全使用Shell2 函数的手册也不是十分实用,笔者进行了多次试验之后才有了今天这篇小文章,愿您读了之后能为您配置PHP节省一点儿时间。phpma.com

  在这篇文章中,笔者需要假设:phpma.com

  你正在运行的操作系统是Debian / Ubuntu。如果你运行的不是Debian / Ubuntu,你可能需要用你的Linux发行版本提供的数据包管理器来替换本文对应内容。

  你运行的是PHP5.如果你运行的不是PHP5,可用PHP4代替之。

  你对PHP和服务器管理有基本的了解。phpma.com

  你已经安装了PHP。

  先决条件phpma.com

  安装程序包

  首先,让我们安装下面的程序包:

  sudo aptitude update

  sudo aptitude install php5-dev php5-cli php-pear buid-essential \

  openssl-dev zlib1g-dev

  安装完成进入下一步。phpma.com

  编译libssh2

  在从sourceforge网站下载了Libssh2之后,我们需要编译它,不过不要担心,你只需要按照如下的方法操作:

  cd /usr/src

  wget http://surfnet.dl.sourceforge.net/sourceforge/libssh2/libssh2-0.14.tar.gz

  tar -zxvf libssh2-0.14.tar.gzphpma.com

  cd libssh2-0.14/

  ./configure

  make all install

  如果你想检查是否有了一个新版本,可以查看SF.NET.不过,0.14这个版本就足够了。

  安装

  安装ssh2.so

  下一步,我们需要将libssh和 PHPr链接起来。有一个PECL模块可以完成这个功能。我们可以使用PEAR安装它。

  pear install -f ssh2phpma.com

  -f参数确保SSH2被安装,即使并没有一个稳定的选择对象。你还可以使用如下的包名称:ssh2-beta来强行运行。

  现在你需要确保我们这个新的SSH2.SO模块被PHP加载。编辑你的php.ini文件(对于CLI实用程序:/etc/php5/cli/php.ini,对于Apache实用程序:/etc/php5/apache2/php.ini)

  extension=ssh2.so

  这应该放在“Dynamic Extensions”的下面,大约在第515行左右。

  PHP支持SSH编写代码 phpma.com

  你刚刚在PHP中启用了SSH2。那么现在应该如何利用它呢?有两个选择。SSH支持:

  1.执行方法:

  这告诉你的服务器的操作系统来执行什么东西,并且通过管道传回到你的脚本。

  2.外壳方法:phpma.com

  这种方法在操作系统中打开一个实际的外壳,这正像通过终端应用程序登录时所操作的那样。有一些路由器并没有一个完全的POSIX一致性实施过程,而是在你登录时立即运行其自身的应用程序。这时你就需要这种方法。

  下面我们分别详述之:

  第一种方法:执行phpma.com

  你最好为下面的代码创建函数或者是一个类,不过本文仅仅起到一个为您提供基本观念的作用,所以说你可以如此开始:

  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";

  // 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;

  }

  fclose($stream);

  }

  }

  第二种方法:外壳 phpma.com

  同样道理,你也可以为如下的代码编写函数或者一个类。不过,本文仅仅提供基本观念:

  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))){
(阅读次数:

共2页: 上一页 1 [2] 下一页
上一篇:中国站长建设网站六种心态要不得   下一篇:Linux系统下查CPU个数的方法
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·PHP生成验证码图片的源代码
·PHP会话对(Session)使用入门
·Php部分常见问题总结[bug]
·php正则表达式的快速学习方法
·高手传经:学习PHP重在坚持
·用php生成静态页面的php函数
·PHP对文本数据库的基本操作方法
·用 PHP 读取文件的正确方法
·讲解PHP+MySQL的分页显示示例
·用PHP构建一个简易监视引擎
·我是怎样打造简单的PHP&MYSQL留
·用PHP实现表单验证码登陆校验
  相关文章
·GD库安装问题详解之动态网页技术
·PHP生成验证码图片的源代码
·PHP 编程语言开发动态 WAP 页面
·动态网页技术PHP中参数引用返回
·在PHP中如何使用header发送头部
·PHP实现任意字符集下正常显示网
·一些PHP学习过程中的心得和经验:
·PHP支持页面回退的两种方法
·过来人谈PHP对初学者头疼问题总
·怎样用php 发送带附件的邮件
·PHP编程中计算时间差的几种方法
·PHP+WAP的中文乱码和操作问题?

关于我们 | 本站声明 | 友情连接 | 诚邀加盟 | 网站地图
版权Power by DedeCms   技术支持QQ =>> 罗江游鱼   Jacking  后台登陆
Copyright @ 2007 公司地址:柳州市东环路268号 邮编:545006 电话:15920389818 桂ICP备07006725号