Bibliothèque PHP qui fournit un wrapper orienté objet pour se connecter à SSH et exécuter des commandes shell avec l'extension php ssh2.
La meilleure façon d’ajouter la bibliothèque à votre projet consiste à utiliser composer.
composer require faraweilyas/ sshbunny
ou
git clone https://github.com/faraweilyas/sshbunny.git
Le constructeur sshbunny
prend quatre paramètres et ils ont tous des valeurs par défaut $method='local'
, $authType=NULL
, $host=NULL
, $port=22
, $username=NULL
$method
peut être défini sur local
ou remote
, local
exécutera des commandes sur votre propre shell sans connexion Internet tandis que remote
exécute des commandes sur le serveur distant auquel vous vous connectez en fonction de votre configuration.$authType
peut être défini sur KEY
, PASSWORD
ou KEY_PASSWORD
, KEY
et KEY_PASSWORD
utilisent ssh2_auth_pubkey_file la différence est lorsque vous définissez $authType='KEY_PASSWORD'
ssh2_auth_pubkey_file prend le dernier paramètre de mot de passe qui sera désormais requis et PASSWORD
utilise ssh2_auth_password.$port
doit être défini sur le port de votre serveur si vous vous connectez à un serveur distant.$username
doit être défini sur le nom d'utilisateur de votre serveur. si vous définissez la méthode de connexion sur $method='remote'
et $authType = KEY || KEY_PASSWORD
cela signifie que vous devrez définir votre fichier de clé publique et privée, ce que vous pouvez faire avec les setters sshbunny
has $ sshbunny ->setKeys('public_key.pub', 'private_key')
avant l'initialisation.
Cela va simplement s'exécuter localement puisque la méthode de connexion est définie sur 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 );
Cela va se connecter à un serveur distant puisque la méthode de connexion est définie sur remote
et le type d'authentification est défini sur 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 );
L'exécution des commandes peut prendre plusieurs commandes ou vous pouvez enchaîner la méthode exec
avec une autre méthode 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 ();