Библиотека PHP, предоставляющая объектно-ориентированную оболочку для подключения к SSH и запуска команд оболочки с расширением php ssh2.
Лучший способ добавить библиотеку в ваш проект — использовать композитор.
composer require faraweilyas/ sshbunny
или
git clone https://github.com/faraweilyas/sshbunny.git
Конструктор sshbunny
принимает четыре параметра, и все они имеют значения по умолчанию $method='local'
, $authType=NULL
, $host=NULL
, $port=22
, $username=NULL
$method
может быть установлен на local
или remote
, local
будет выполнять команды в вашей собственной оболочке без подключения к Интернету, а remote
выполняет команды на удаленном сервере, к которому вы подключаетесь, в зависимости от вашей конфигурации.$authType
может быть установлен в KEY
, PASSWORD
или KEY_PASSWORD
, KEY
и KEY_PASSWORD
используют ssh2_auth_pubkey_file, разница в том, что когда вы устанавливаете $authType='KEY_PASSWORD'
ssh2_auth_pubkey_file принимает последний параметр пароля, который теперь будет необходим, а PASSWORD
использует ssh2_auth_password.$port
должен быть указан порт вашего сервера, если вы подключаетесь к удаленному серверу.$username
должно быть указано имя пользователя вашего сервера. если вы устанавливаете метод подключения на $method='remote'
и $authType = KEY || KEY_PASSWORD
это означает, что вам нужно будет установить файл открытого и закрытого ключей, что вы можете сделать с помощью установщиков. sshbunny
имеет $ sshbunny ->setKeys('public_key.pub', 'private_key')
перед инициализацией.
Это будет выполняться локально, поскольку для метода подключения установлено local
<?php
use sshbunny sshbunny ;
require_once ' vendor/autoload.php ' ;
// ->getData() will return output of command executed while ->getData(TRUE) will dispay the output
$ sshbunny = ( new sshbunny ( ' local ' ))
-> initialize ()
-> exec ( " echo 'Hello World' " )
-> getData ( TRUE );
Это будет подключение к удаленному серверу, поскольку метод подключения установлен на remote
, а тип аутентификации установлен на KEY
<?php
use sshbunny sshbunny ;
require_once ' vendor/autoload.php ' ;
defined ( ' TEST_HOST ' ) ? NULL : define ( ' TEST_HOST ' , " 138.222.15.1 " );
defined ( ' PORT ' ) ? NULL : define ( ' PORT ' , " 22 " );
defined ( ' USERNAME ' ) ? NULL : define ( ' USERNAME ' , " ubuntu " );
defined ( ' PUBLIC_KEY ' ) ? NULL : define ( ' PUBLIC_KEY ' , ' id_ssl.pub ' );
defined ( ' PRIVATE_KEY ' ) ? NULL : define ( ' PRIVATE_KEY ' , ' id_ssl ' );
$ sshbunny = ( new sshbunny ( ' remote ' , ' KEY ' , HOST , PORT , USERNAME ))
-> setKeys ( PUBLIC_KEY , PRIVATE_KEY )
-> initialize ()
-> exec ( " echo 'Hello World' " )
-> getData ( TRUE );
Выполнение команды может выполнять несколько команд, или вы можете связать метод exec
с другим методом exec
.
$ sshbunny = ( new sshbunny ( ' remote ' , ' KEY ' , HOST , PORT , USERNAME ))
-> setKeys ( PUBLIC_KEY , PRIVATE_KEY )
-> initialize ()
// Multiple commands
-> exec ( " echo 'Hello World' " , " cd /var/www/html " )
// Method chaining
-> exec ( " ls -la " )
-> getData ( TRUE );
// Will return the result of executed command output
$ sshbunny
-> exec ( " ls -la " )
-> getData ();
// Will display the result of executed command output
$ sshbunny
-> exec ( " ls -la " )
-> getData ( TRUE );
// Will clear the first executed command output and return the next executed command output
$ sshbunny
-> exec ( " ls -la " )
-> clearData ()
-> exec ( " whoami " )
-> getData ( TRUE );
// Will run the commands provided and display the result then disconnect from the server
$ sshbunny
-> exec ( " ls -la " , " whoami " )
-> getData ( TRUE )
-> disconnect ();