Skip to content

Latest commit

 

History

History
114 lines (80 loc) · 2.44 KB

README.md

File metadata and controls

114 lines (80 loc) · 2.44 KB

ssh2

Library which provide you ability execute remote commands like in terminal

With this library you can execute any commands using ssh2 protocol.

####Usage

  • Password authentication
<?php

use Ssh\Client;
use Ssh\Auth\Password;

$auth = new Password('username', 'password');
$client = new Client('host_name_or_ip');

try {
  $client->connect()->authenticate($auth);
  echo $client->exec('pwd');
} catch (\RuntimeException $e) {
  echo $e->getMessage();
}
  • Public key authentication
<?php

use Ssh\Client;
use Ssh\Auth\PublicKey;

$auth = new PublicKey('username', 'path to public key', 'path to private key', 'passphrase if set');
$client = new Client('host_name_or_ip');

try {
  $client->connect()->authenticate($auth);
  echo $client->exec('pwd');
} catch (\RuntimeException $e) {
  echo $e->getMessage();
}
  • Command chain
<?php

use Ssh\Client;
use Ssh\Auth\PublicKey;
use Ssh\Command\Result;
use Ssh\Command\Chain;

$auth = new PublicKey('username', 'path to public key', 'path to private key', 'passphrase if set');
$client = new Client('host_name_or_ip');

try {
  $client->connect()->authenticate($auth);
  echo $client
              ->chain()
              ->exec('pgrep node', function (Result $result, Chain $chain) {
                $result = $result->getResult();
                if ($result && is_numeric($result)) {
                  $chain->stopChain();
                }
              })
              ->exec('/usr/local/bin/node ~/server.js > ~/node_server.log &');
} catch (\RuntimeException $e) {
  echo $e->getMessage();
}
  • With ssh config file
<?php

use Ssh\Config\Configuration;
use Ssh\Client;

$configuration = new Configuration('path to ssh config file like a /home/username/.ssh/config');
$client = new Client($configuration->getHost('hostname'));

//  now if you need authenticates with password (PasswordAuthentication set to yes) you need to set password
$client->getAuth()->setPassword('xxxxx');

//  else if you set IdentityFile or PubkeyAuthentication is yes or not set PubkeyAuthentication
//  trying to find currenct user public key and private key files into ~/.ssh/ directory, if keys not exists
//  you need authenticates with methods above, if keys exists you can connect and authenticate

try {
  $client->connect()->authenticate();
  echo $client->exec('pwd');
} catch (\RuntimeException $e) {
  echo $e->getMessage();
}
  • Shell

With shell you can working like in terminal