SSH-соединение с использованием PHP

В моем VPN есть удаленный сервер и удаленный маршрутизатор (который работает под управлением RouterOS с API и поддерживает ssh-соединения). Я хочу написать сценарий php и развернуть его на сервере, чтобы он подключался к удаленному маршрутизатору с использованием IP-адреса и учетных данных для входа в систему, а затем выполнял некоторые команды.

Я прочитал в Интернете, что есть решение для библиотеки libssh2.php, но я не могу понять, как установить / использовать или даже проверить, работает ли она на сервере. Сервер работает CentOS.

Заранее спасибо!!!

2 ответа

Решение

Я делал это раньше и просто использовал команду SSH напрямую. Например:

$sshCmd = "ssh user@1.2.3.45 \"ls -la ~\"";
exec($sshCmd, $output, $errorCode);
echo "Error code: $errorCode\n";
echo "Output: " . implode("\n", $output);

Если у вас есть более сложные скрипты для запуска, вы можете затем поместить их в.sh скрипт и запустить затем через bash:

$sshCmd = "ssh user@1.2.3.45 'bash -s' < \"/path/to/script.sh\"";
exec($sshCmd, $output, $errorCode);
echo "Error code: $errorCode\n";
echo "Output: " . implode("\n", $output);

Я думаю, что вам лучше всего использовать phpseclib, чистую реализацию PHP SSH. Он имеет ряд преимуществ перед libssh2:

http://phpseclib.sourceforge.net/ssh/compare.html

Вот пример:

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>
Другие вопросы по тегам