Как запустить команды CLI в PHP на другом сервере, используя SSH? - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь запустить команды CLI в PHP, но на другом сервере.Для запуска команды на другом сервере я использую команду linux ssh.Для запуска команды CLI в PHP я использую exec().

Это работает ...

$output = exec('cut -d: -f1 /etc/passwd'); //works!

Это работает из командной строки одного сервера на другой ...

ssh my.otherserver.com "date"

Но, когда я пытаюсь сделать это в PHP, это не работает ...

$output = exec('ssh my.otherserver.com "date"'); //does not work!

Возможно ли то, что я пытаюсь сделать?Как мне это сделать?Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 27 мая 2018

ssh2_connect или phpseclib

Вы можете использовать ssh2_connect или phpseclib.В моем экземпляре EC2 мне пришлось установить пакет для ssh2_connect (например, yum install php56-pecl-ssh2-0.12-5.15.amzn1.x86_64), так как его там не было по умолчанию.Примечание: это можно сделать и с помощью bash-скрипта.

<?php

//ssh2_connect:
$connection = ssh2_connect('localhost', 22);
ssh2_auth_password($connection, 'user', 'password');
$stream = ssh2_exec($connection, 'ls -l > /tmp/worked.txt');

//phpseclib:
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.example.com');
$ssh->login('username', 'password') or die("Login failed");
echo $ssh->exec('command');

Дополнительная информация:

http://phpseclib.sourceforge.net/

http://php.net/manual/en/function.ssh2-connect.php

0 голосов
/ 27 мая 2018

Require:

sudo apt install php-ssh2

В этом примере будет получен вывод ls -ltrapR с удаленного php-сервера.

#!/usr/bin/php
<?php
$con=ssh2_connect('223.245.xx.xx', 22);
ssh2_auth_password($con, 'root', 'bybyDRRxxxx');
$shell=ssh2_shell($con, 'xterm');
$stream = ssh2_exec($con, 'ls -ltrapR');
stream_set_blocking($stream, true);
$out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($out);

Обратите внимание, так как используется только обычная аутентификация (FineTrought SSL, лучше использовать VPN).Кроме того, он может быть секьюритизирован с помощью криптографических ключей и , иначе .

0 голосов
/ 25 мая 2018

для соединения с сервером по ssh вам необходимо использовать ssh2_exec функцию php.

Я рекомендовал вам использовать phpseclib , это оболочка для реализации PHP SSH

...