Установка php ssh2 модуля

Не каждый знает,что с помощью php можно выполнять команды на удаленном сервере используя ssh. Руководств по PHP Secure Shell2 функций не очень много и немного запутаны. Так что хочу поделиться с вами своим небольшим опытом.

 

Итак. Есть сервер на основе Ubuntu c установленным php5 и apache2. Установим необходимые пакеты для дальнейшей работы и включаем соответствующий модуль:

sudo aptitude install php5-dev php5-cli php-pear build-essential openssl-dev \
 zlib1g-dev libssh2-1-dev pecl install -f ssh2 echo 'extension=ssh2.so' > /etc/php5/conf.d/ssh2.ini

У меня все прошло успешно. Если что-то не так,то посмотрите код ошибки — возможно нужно доустановить некоторые пакеты.

 

Затем необходимо скачать и установить библиотеку libssh2,которая нам позволит использовать ssh в php скриптах:

cd /usr/src 
wget http://surfnet.dl.sourceforge.net/sourceforge/libssh2/libssh2-0.14.tar.gz tar -zxvf libssh2-0.14.tar.gz cd libssh2-0.14/ ./configure make all install /etc/init.d/apache2 restart

Для проверки работоспособности я использовал следующий пример:

ssh {
   var $stream;
   var $connection;
   var $data;
   function connect($host,$login,$pass,$port=22) {
     $this->connection = ssh2_connect($host,$port);
     return ssh2_auth_password($this->connection,$login,$pass);
   }
   function cmd ($cmd) {
     if( !($this->stream=ssh2_exec($this->connection,$cmd )) ) {
       echo "fail: unable to execute command";
     }
     else {
       stream_set_blocking($this->stream,true );
       $this->data = "";
       while( $buf = fread($this->stream,4096) ) {
         $this->data .= $buf;
       }
     }
     return $this->data;
   }
   function close () {
     fclose($this->stream);
   }
};
$S = new ssh();
$S->connect('host','login','password','port');
echo $S->cmd("ls");
echo $S->cmd("w");
echo $S->cmd("sudo iptables -L");
$S->close();
?>

В итоге вы получаете результат выполнения 3-х команд: ls,w,iptables -L (для последней добавлены права на запуск без ввода пароля в /etc/sudoers )

Источник: http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *