ITblog.by » Статьи » Установка php ssh2 модуля

Установка 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/


Аватар пользователя me
  • me
  • 5 сентября 2013 16:54
  • Группа Гости
  • Новостей: 0
  • Комментариев: 0
Пропустили указание порта

Должно быть

$S->connect('host', 'login', 'password', '$port');
Аватар пользователя greenlogles
  • greenlogles
  • 5 сентября 2013 18:04
  • Группа Администраторы
  • Новостей: 65
  • Комментариев: 22
me, Спасибо, подправил.
+ указал дефолтовый порт, если захочется использовать старый вариант smile
Rating All.BY Анализ сайта ITblog.by