Выполнить команду оболочки через ssh с помощью PHP

Я пытаюсь выполнить простую команду оболочки и распечатать результат на веб-странице, но результаты пустые. Ниже приведен один бит кода, который я нашел, но пока ничего не работает.

<?php $server = "myserver"; $username = "myadmin"; $command = "ps"; $str = "ssh " .$username. "@" .$server. " " .$command; exec($str, $output); echo '<pre>'; print_r($output); echo '</pre>'; ?> 

Попробуйте phpseclib , это сработает.

 <?php include('Net/SSH2.php'); $server = "myserver"; $username = "myadmin"; $password = "mypass"; $command = "ps"; $ssh = new Net_SSH2($server); if (!$ssh->login($username, $password)) { exit('Login Failed'); } echo $ssh->exec($command); ?> в <?php include('Net/SSH2.php'); $server = "myserver"; $username = "myadmin"; $password = "mypass"; $command = "ps"; $ssh = new Net_SSH2($server); if (!$ssh->login($username, $password)) { exit('Login Failed'); } echo $ssh->exec($command); ?> 

Перед номером порта отсутствует опция -p :

 $str = "ssh -p $port $username@$server $command"; 

Используя более объектно-ориентированное решение, вы можете установить phpseclib версии 2 с помощью:

 composer require phpseclib/phpseclib 

А затем просто создайте свой объект ssh:

 $ssh = new SSH2('yourhost'); if (!$ssh->login('username', 'password')) { exit('Login Failed'); } 

В этом примере я использовал соединение через имя пользователя и пароль, но вы также можете подключиться через ssh-ключи. Если соединение выполнено успешно, вы можете выполнить метод exec для выполнения команды на сервере.