使用SSH跟PHP连接 确保安全传输数据(2)

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

  pear install -f ssh2

  -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编写代码

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

  1.执行方法:

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

  2.外壳方法:

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

  下面我们分别详述之:

  第一种方法:执行

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

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

  }

  }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwyfyz.html