Вход



Home Статьи Linux Установка SSH2 модуля для php
Установка SSH2 модуля для php Печать
Linux
Автор: GreenLogle$   
01.06.2010 16:07

Не каждый знает, что с помощью 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

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

<?php 
class ssh {
var $stream;
var $connection;
var $data;
function connect($host,$login,$pass,$port) {
$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');
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/

 

. Система поиска авиабилетов - авиабилеты Киев.
Апостилирование документов в МИД
авто